600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > .6.21P72_OpenCV_几何变换_图像平移_缩放_旋转

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

时间:2019-09-04 03:34:30

相关推荐

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

描述:

//.6.21P72_OpenCV_图像平移_缩放_旋转

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

代码:

//.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;}

结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。