C++怎么实现图像特效显示
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容介绍了"C++怎么实现图像特效显示"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!图像扫描显示
千家信息网最后更新 2025年02月01日C++怎么实现图像特效显示图像扫描显示 图像渐显
马赛克显示
本篇内容介绍了"C++怎么实现图像特效显示"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
向下扫描就是对图像进行分块并延时显示。
可以通过不断的改变显示的roi区域来达到扫描的效果:
void scanning_down(){ //读取图片 Mat srcImage, dstImage; srcImage = imread("2.jpg"); imshow("原图", srcImage); //定义变量 Mat roiImage; int ImageHeigth = srcImage.rows; int ImageWidth = srcImage.cols; namedWindow("向下扫描"); for (int i = 1; i < ImageHeigth; i++) {//步长为1 roiImage = srcImage(Rect(0, 0, ImageWidth, i)); roiImage.copyTo(dstImage); imshow("向下扫描", dstImage); waitKey(5); } waitKey(0);}
动图
向上,向左,向右扫描显示同理。
图像渐显思路是先记录下图像每个像素点的像素值,显示的时候先将屏幕置黑,将循环显示图像n次,n依次为0,1,2,...,256。每一次显示像素值的n/256倍,从而达到渐显的效果。
void fade_in()//淡入
{
//读取图片
Mat srcImage, dstImage;
srcImage = imread("2.jpg");
dstImage = srcImage.clone();
imshow("原图", srcImage);
//定义变量
Mat roiImage;
int ImageHeigth = srcImage.rows;
int ImageWidth = srcImage.cols * 3;
namedWindow("图像渐显");
for (int n = 1; n < 256; n++) {
for (int i = 0; i < ImageHeigth; i++) {
uchar* data1 = srcImage.ptr
(i); uchar* data2 = dstImage.ptr
(i); for (int j = 0; j < ImageWidth; j++) {
data2[j] = data1[j] * n / 256;
}
}
imshow("图像渐显", dstImage);
waitKey(10);
}
}
动图
马赛克显示是将图片分为固定大小的小块,并记录下所有小块的左上角坐标,然后随机将这些小块显示出来,就是马赛克效果。
//图像马赛克显示void mosaic() { //读取图片 Mat srcImage, dstImage; srcImage = imread("2.jpg"); dstImage = Mat(srcImage.size(), CV_8UC3); imshow("原图", srcImage); //定义变量 Mat roiImage; int ImageHeigth = srcImage.rows; int ImageWidth = srcImage.cols; namedWindow("图像马赛克显示"); //存储每个小块的首地址并随机打乱 int step =24;//定义马赛克边长(正方形) vectortemp; unsigned int mi = 0; //for循环存储所有节点坐标 for (int x = 0; x < ImageWidth; x = x + step) { for (int y = 0; y < ImageHeigth; y = y + step) { if (x > ImageWidth - step) { x = ImageWidth - step; } if (y > ImageHeigth - step) { y = ImageHeigth - step; } temp.push_back(Point2d(x,y)); mi++; } } random_shuffle(temp.begin(), temp.end());//打乱容器内元素 //for循环显示每个随机马赛克 for (int i = 0; i < mi; i++) { srcImage(Rect(temp[i].x, temp[i].y, step, step)).copyTo(dstImage(Rect(temp[i].x, temp[i].y, step, step))); imshow("图像马赛克显示", dstImage); waitKey(1); } waitKey(0);}
动图
"C++怎么实现图像特效显示"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
图像
马赛克
马赛
图片
像素
原图
变量
效果
循环
特效
C++
内容
坐标
就是
更多
知识
存储
实用
学有所成
接下来
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
东尼电子软件开发
网络安全迎查报告
银行软件开发主要做啥
威海管理软件开发系统
昆明软件开发培训哪家强
延庆区口碑好的软件开发诚信合作
服务器203
网络安全法第41条如何适用
青岛瑞比软件开发有限公司
计算机网络技术就业企业有哪些
软件开发管理 证书
沭阳《网络安全法》
浦东新区网络技术服务产业
戴尔t440服务器分辨率设置
财务基础软件开发
怀柔区正规软件开发配置
苏州网络技术咨询哪家好
空间分析算法软件开发
ctf网络安全比赛教程
计算机网络安全教程 课后题
迅雷云服务器正忙
京东的网络安全支付问题
省心的山东虚拟主机服务器
科普网络安全问题与对策
宝塔数据库连接地址是
海康服务器默认账号密码多少
广州web前端软件开发服务
计算机网络技术出来好就业吗
金山区多层软件开发成本
1901网络安全演练