您的位置:首页 > 运维架构

opencv之图像几何变换和放大

2017-12-13 18:56 260 查看
平移:

#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
int main()
{

const char* imagename = "C://Users//huashuo111//Desktop//test2.bmp";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return-1;
}
Mat dst;
Mat M=(Mat_<double>(2,3)<<1,0,200,0,1,150);//平移向量(200,150)
warpAffine(img,dst,M,img.size());

imshow("原图",img);
imshow("平移",dst);

imwrite( "C://Users//huashuo111//Desktop//pingyi.bmp",dst);

//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}
原图:



平移后:



旋转:

#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
int main()
{

const char* imagename = "C://Users//huashuo111//Desktop//test2.bmp";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return-1;
}
Mat dst;
Mat M=getRotationMatrix2D(Point2f(img.cols/2,img.rows/2),45,1);//旋转矩阵(绕中心点逆时针45度)
warpAffine(img,dst,M,img.size());

imshow("原图",img);
imshow("平移",dst);

imwrite( "C://Users//huashuo111//Desktop//xuanzhuan.bmp",dst);

//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}


旋转后:



尺寸变换之图像金字塔:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace std;
using namespace cv;

int main()
{
Mat img;
img=imread("C://Users//huashuo111//Desktop//橘子.jpg");
namedWindow("原图",1);
imshow("原图",img);
Mat img1=img.clone();
Mat temp=img.clone();
Mat img2;
pyrUp(temp,img1,Size());//放大
pyrDown(temp,img2,Size());//缩小
imshow("效果图1",img1);
imshow("效果图2",img2);

waitKey();
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: