opencv 图像旋转

一、图像旋转

算子:transpose(src, src);

transpose()可以实现像素下标的x和y轴坐标进行对调:dst(i,j)=src(j,i),接口形式

transpose(
  InputArray src, // 输入图像
  OutputArray dst, // 输出
)


算子:flip(src, src, 1);

flip()函数可以实现对图像的水平翻转、垂直翻转和双向翻转

void flip(
     InputArray src, // 输入图像
     OutputArray dst, // 输出
     int flipCode = 0 // >0: 沿y-轴翻转, 0: 沿x-轴翻转, <0: x、y轴同时翻转
  );

flip(img1,0)#水平轴翻转(上下翻转)
flip(img1,1)#垂直轴翻转(左右翻转)
flip(img1,-1)#双向翻转

二、代码显示

#if 1  // 旋转角度
Mat rotate_img(Mat src, int idx) {
	//旋转90度
	if (idx == 1) {
		transpose(src, src);
		flip(src, src, 1);
		return src;
	}
	//旋转180度
	else if (idx == 2) {
		flip(src, src, 0);
		flip(src, src, 1);
		return src;
	}
	//旋转270度
	else if (idx == 3) {
		transpose(src, src);
		flip(src, src, 0);
		return src;
	}
	else {
		return src;
	}

}
int main() {
	Mat src = imread("C:\\Users\\19473\\Desktop\\opencv_images\\33.jpg");
	if (!src.data)
	{
		printf("could not  load  image....\n");
	}

	imshow("原图", src);

	Mat  m1= rotate_img(src,1); //90度
	imshow("90度", m1);
	Mat  m2 = rotate_img(src, 2); //180度
	imshow("180度", m2);
	Mat  m3 = rotate_img(src, 3); //270度
	imshow("270度", m3);
	waitKey(0);
	return 0;
}
#endif

opencv 图像旋转_第1张图片

 

 opencv 图像旋转_第2张图片

 opencv 图像旋转_第3张图片

你可能感兴趣的:(opencv,opencv,计算机视觉,人工智能)