C++怎么实现图像的平移
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"C++怎么实现图像的平移",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++怎么实现图像的平移"吧!图像的平移移动是将图像看作一个整体,
千家信息网最后更新 2025年02月01日C++怎么实现图像的平移图像的平移 中间扩张
水平栅条特效
本篇内容主要讲解"C++怎么实现图像的平移",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++怎么实现图像的平移"吧!
移动是将图像看作一个整体,显示时不能像扫描那样,扫描方式有些像打开一副画,例如显示上部分的时候,下部分可以不现实,而移动则可以看成一块木板画,显示时必须按物理顺序进行,例如从上向下平移时,必须先显示下面的图像,后显示上面的图像,因此平移的算法比扫描难一些。
平移是一复制的方法显示图像的,每显示一次,复制的行数就增加一行,直至显示完成。
//移动显示void Mobile_display(){ //读取图片 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("移动显示"); for (int i = 1; i < ImageWidth; i++) {//步长为1 roiImage = srcImage(Rect(ImageWidth-i, 0, i, ImageHeigth)); roiImage.copyTo(dstImage(Rect(0, 0, i, ImageHeigth))); imshow("移动显示", dstImage); waitKey(5); } waitKey(0);}
动图
当我们打开电视机时,都有这样的感觉:电视图像是从屏幕中间开始,向上下两个方向展开的,这种效果就是中间扩张。中间扩张特效显示的原理其实并不难,在显示的时候,先将图像分成两部分,将中间分界处显示在屏幕中央,并快速向上向下扫描图像,最后将图像完整的显示在屏幕上,这样人们因为视觉生理的特点就会看到中间扩张的效果。
//中间扩张
void Middle_expansion()
{
//读取图片
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("中间扩张");
for (int i = 1; i <= ImageHeigth/2; i++) {//步长为1
roiImage = srcImage(Rect(0, ImageHeigth / 2 - i, ImageWidth, i));
roiImage.copyTo(dstImage(Rect(0, ImageHeigth / 2 - i, ImageWidth, i)));
roiImage = srcImage(Rect(0, ImageHeigth / 2, ImageWidth, i));
roiImage.copyTo(dstImage(Rect(0, ImageHeigth / 2, ImageWidth, i)));
imshow("中间扩张", dstImage);
waitKey(5);
}
waitKey(0);
}
动图
栅条特效分为水平栅条和垂直栅条,其效果如同将两手交叉的过程,栅条显示的原理是先将图像分为若干行,将奇数行组成一组,偶数行组成一组,在显示时奇数行从右向左平移,偶数行从左向右平移。
//水平栅条特效
void Grid_effect()
{
//读取图片
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;
int step=10;//每个栅格宽度
namedWindow("中间扩张");
for (int i = 1; i < ImageWidth+1; i=i+10) {//步长为1
for (int j = 0; j < ImageHeigth; j=j+2*step) {//步长为1
//奇数行从右往左
roiImage = srcImage(Rect(0, j, i, step));
roiImage.copyTo(dstImage(Rect(ImageWidth - i, j, i, step)));
//偶数行从左往右
int k = j + step;
roiImage = srcImage(Rect(ImageWidth - i, k, i, step));
roiImage.copyTo(dstImage(Rect(0, k, i, step)));
imshow("中间扩张", dstImage);
waitKey(1);
}
}
waitKey(0);
}
动图
到此,相信大家对"C++怎么实现图像的平移"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
图像
平移
栅条
移动
特效
步长
C++
偶数
原图
变量
图片
奇数
屏幕
效果
水平
部分
内容
原理
方法
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
生活中数据库应用场景
怀旧服各服务器平衡情况
肇庆社交软件开发常见问题
国家网络安全知识问卷
创建mysql数据库参数
画饭圈乱像 绘网络安全 儿童画
描述网络安全案例500字
数据库check类型
综合软件开发毕业论文
河源市光神王网络技术
网络安全法全文第十九条
软件开发办公室图片
网络安全的会议的意义
网络技术用不用考计算机二级
网络安全威胁统计
自制十字绣软件开发
什么叫大屏服务器
vip数据库检索
软件开发 重要过程文档
计算机网络技术特征特点
网络安全在我心哥特式字体
信息网络安全法的认识
数据库完整性主要内容
数据库触发器alter和for
软件开发自学记录
后台服务器
软件开发需求申请单模板
山东省政府关于网络安全
网络安全法规定追究民事责任
纳入属地网络安全工作