分享

OpenCV中截取旋转矩形区域

 行走在理想边缘 2024-05-15 发布于四川

OpenCV中,在一些场景下需要截取旋转ROI区域进行处理,本文主要演示如何截取旋转矩形。代码如下:

#include "opencv2/opencv.hpp"  
using namespace cv;
int main()
{
	Mat test_image = imread("./Datas/test.jpg");
	RotatedRect rRect = RotatedRect(Point2f(500, 600), Size2f(300, 200), 30);

	Point2f vertices[4];
	rRect.points(vertices);
	for (int i = 0; i < 4; i++)
		line(test_image, vertices[i], vertices[(i + 1) % 4], Scalar(0, 255, 0), 2);


	cv::Mat mask = cv::Mat::zeros(test_image.size(), CV_8UC1);
	//绘制旋转矩形的轮廓到掩码图像上
	cv::Point points[1][4];
	for (int i = 0; i < 4; ++i) {
		points[0][i] = vertices[i];
	}
	const cv::Point* ppt[1] = { points[0] };
	int npt[] = { 4 };
	cv::fillPoly(mask, ppt, npt, 1, cv::Scalar(255));
	
	//使用掩码图像截取旋转矩形区域
	cv::Mat croppedImage;
	
	test_image.copyTo(croppedImage, mask);

	imshow("rectangles", croppedImage);
	imwrite("./Datas/rectangles.png", croppedImage);
	waitKey(0); 
	return 0;
}

原图上有一个矩形区域,红色框选,如下所示:

在这里插入图片描述

截取的ROI区域如下所示:
在这里插入图片描述

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多