C++怎么实现图像的平移
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇内容主要讲解"C++怎么实现图像的平移",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++怎么实现图像的平移"吧!图像的平移移动是将图像看作一个整体,
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
两个数据库表格数据比对
如何复制命令行窗口数据库
知道数据库应用技术答案
供应无线串口服务器
广西2u服务器机箱采购
proc连接数据库
浙江桌面软件开发费用
打开数据库建立视图
电信代理服务器
如何在服务器增加管理主机
如何提高内部服务器安全
后缀网络技术有限公司
oracle数据库的好处
服务器测试中st和ft
网络安全知识普及ppt
web服务器负载均衡怎么调
长春迪瑞医疗软件开发
密云区信息化软件开发价格走势
数据库原理与应用奥鹏
预防沉迷网络安全教育班会
河北新一代网络技术推广
宝鸡市网络安全和信息化委员会
深圳金融软件开发公司
服务器电源风扇转没电压输出
5e网络安全生态标准是
评估软件开发
建立数据库要用的技术
网信办开展网络安全自查总结
数据库每条记录大小
asp网站默认数据库路径