2020.6.21P72_OpenCV_几何变换_图像平移_缩放_旋转

news/2024/7/16 8:22:27

描述:

//2020.6.21P72_OpenCV_图像平移_缩放_旋转

完成一张图像的几何变换需要两个独立的算法。首先需要一个算法实现 空间坐标变换 ,用它描述每个像素如何从初始位置移动到终止位置;其次,还需要一个 插值算法 完成输出图像的每个像素的灰度值。

代码:

//2020.6.21P72_OpenCV_图像平移_缩放_旋转
//#include <opencv2/core.hpp>
//#include <opencv2/highgui.hpp>
//txwtech
#include<opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main(int argc, char *argv[])
{
	//Mat I = imread(argv[1],CV_LOAD_IMAGE_GRAYSCALE);
	//Mat I = imread(argv[1], CV_LOAD_IMAGE_COLOR);
	Mat I = imread("yezi.png");
	//图片放在cpp的相同目录。 比如cvp71.cpp, yezi.png放在同一个文件夹
	if (!I.data) //no data ,return to -1;
		return -1;
	//缩放仿射矩阵,等比例缩放2倍
	Mat s = (Mat_<float>(2,3)<<0.5, 0, 0, 
		                       0, 0.5, 0);


	//x平移80,y不移动仿射矩阵
	Mat s5 = (Mat_<float>(2,3)<<1, 0, 180,
		                         0, 1, 0);

	//x平移80,y移动100仿射矩阵
	/*Mat s2 = (Mat_<float>(2, 3) << 1, 0, 80,
		                             0, 1, 100);*/

	//缩放+平移仿射矩阵
	Mat s2 = (Mat_<float>(2, 3) << 0.5, 0, 80,
		                           0, 0.5, 80);
	Mat s3 = getRotationMatrix2D(Point2f(280,280),-90,0.5);//顺时针旋转90度,缩小2倍
	Mat dst1a, dst1b;
	
	Mat dst1,dst3;
	//插值算法
	warpAffine(I,dst1,s,Size(I.cols/2,I.rows/2));//图像缩放
	warpAffine(I, dst3,s3,Size(I.cols,I.rows));//顺时针旋转90度,缩小2倍
	warpAffine(I, dst1b, s2, Size(I.cols, I.rows));//缩放+平移
	warpAffine(I, dst1a, s5, Size(I.cols, I.rows));//平移

	Mat dst2;
	resize(I,dst2,Size(I.cols/2,I.rows/2),0.5,0.5);//openCV缩放函数

	imshow("原图像I",I);
	imshow("平移",dst1a);
	imshow("缩放+平移", dst1b);
	//imshow("warAffine仿射方式",dst1);
	//imshow("resize方式",dst2);
	imshow("缩放+旋转90度",dst3);

	Mat img2,Rimg3;
	img2 = I.clone();
	//imshow("复制图像",img2);
	
	

	waitKey(0);
	return 0;


}

结果:

 


http://www.niftyadmin.cn/n/643747.html

相关文章

Microsoft AJAX Library对 Boolean的扩展

Microsoft AJAX Library对 Boolean对象添加了一个静态方法来扩展其功能&#xff1a; Boolean.parse 函数 将逻辑值的字符串表示形式转换为其 Boolean 等效对象。 此函数是静态的&#xff0c;可在不创建对象实例的情况下调用。 使用 parse 函数可以根据字符串表示形式创建布尔值…

2020.6.21_P77_OpenCV投影变换-通过鼠标事件在原图和输出的画布上选取四组对应的坐标

//2020.6.21_P77_OpenCV投影变换 //通过鼠标事件在原图和输出的画布上选取四组对应的坐标 //投影矩阵的数据类型为CV_64F //txwtech //2020.6.21_P77_OpenCV投影变换 //通过鼠标事件在原图和输出的画布上选取四组对应的坐标 //投影矩阵的数据类型为CV_64F //txwtech #include &…

可视化教学设计行业柱状图(二)

源代码和教案&#xff08;访问密码&#xff1a;7567&#xff09;资源链接https://url56.ctfile.com/f/34653256-531257609-044d38

SSh 问题处理技巧

1、ssh 登录出现Are you sure you want to continue connecting (yes/no)?解决方法 使用ssh -o 的参数进行设置 ssh -o StrictHostKeyCheckingno rootxxxxxxx 或者修改配置文件&#xff1a; /etc/ssh/ssh_config 将其中的# StrictHostKeyChecking ask 改成 StrictHostKeyCheck…

模拟转数字电路中测量参数解析:SNR、SINAD、ENOB

在模拟转数字电路中&#xff0c;经常会看到SNR、SINAD、ENOB参数&#xff0c;那么它们到底是什么含义&#xff0c;又是如何测量得到的呢&#xff1f; 信号噪声功率比SNR&#xff0c;单位为dB&#xff0c;是输入信号和噪声&#xff08;不包括任何谐波以及直流成分&#xff09;平…

可视化教案-人员变化折线图

源代码和教案&#xff08;访问密码&#xff1a;7567&#xff09;下载下来自己编辑吧&#xff0c;都是Word格式的源代码和教案的链接https://url56.ctfile.com/f/34653256-531474942-77986d

Notes迁移Exchange2010 数据中心系列之一:前期准备

邮件系统是企业IT应用的最关键系统&#xff0c;每天的工作都离不开邮件&#xff0c;看不了邮件什么事情也干不了。目前成熟的邮件系统要数IBM的Notes和微软的Exchange&#xff0c;Notes的使用很有特点&#xff0c;它不光是邮件系统&#xff0c;还能开发出二次应用数据库&#x…

高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD

&#xff08;一&#xff09;一个基本概念 分贝(dB)&#xff1a;按照对数定义的一个幅度单位。对于电压值&#xff0c;dB以20log(VA/VB)给出&#xff1b;对于功率值&#xff0c;以10log(PA/PB)给出。dBc是相对于一个载波信号的dB值&#xff1b;dBm是相对于1mW的dB值。对于dBm而…