C++怎么实现图像特效显示
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容介绍了"C++怎么实现图像特效显示"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!图像扫描显示
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
南京管理系统软件开发
软件开发 输出文档
海曙敏捷软件开发
网络安全意识 视频
华发软件开发待遇
国家网络安全科普读物
濡沫江湖无法获取服务器列表
滨城区浅蓝软件开发工作室
区块链软件开发公司深圳
网络安全职位岗位责任书
示范区网络安全宣传
ram 软件开发
oracle 查询没数据库
如何设置网络安全课堂
阿巴互联网科技
如何查询外汇交易服务器数量
大兴区节能软件开发服务技术规范
服务器主机硬盘读写100%
远程连接管理器服务器
建湖缀赂网络技术有限公司
数据库怎么防止并发更新
佛山易网互联网科技有限公司
无线显示程序软件开发
联想网络管理服务器
电子商务数据库的基本表
通用软件开发售后保障
服务器 保存图片
网络安全风险评估系统设计
计算机网络技术信号电缆分类
建湖缀赂网络技术有限公司