使用c++实现OpenCV绘制图形旋转矩形

目录

    【使用c++实现OpenCV绘制图形旋转矩形】功能函数
    // 绘制旋转矩形void DrawRotatedRect(cv::Mat mask,const cv::RotatedRect &rotatedrect,const cv::Scalar &color,int thickness, int lineType){// 提取旋转矩形的四个角点 cv::Point2f ps[4]; rotatedrect.points(ps); // 构建轮廓线 std::vector> tmpContours; // 创建一个InputArrayOfArrays 类型的点集 std::vector contours; for (int i = 0; i != 4; ++i) {contours.emplace_back(cv::Point2i(ps[i])); } tmpContours.insert(tmpContours.end(), contours); // 绘制轮廓,即旋转矩形 drawContours(mask, tmpContours, 0, color,thickness, lineType); // 填充mask}

    测试代码
    #include #include using namespace std; using namespace cv; void DrawRotatedRect(cv::Mat mask, const cv::RotatedRect &rotatedrect, const cv::Scalar &color,int thickness, int lineType); int main(){ cv::Mat src = https://www.it610.com/article/imread("test.jpg"); cv::Mat result = src.clone(); cv::RotatedRect rorect(cv::Point(src.cols / 2, src.rows / 2), cv::Size(1000, 800), 50); DrawRotatedRect(result, rorect, cv::Scalar(0, 255, 255), 5,16); imshow("original", src); imshow("result", result); waitKey(0); return 0; }// 绘制旋转矩形void DrawRotatedRect(cv::Mat mask,const cv::RotatedRect &rotatedrect,const cv::Scalar &color,int thickness, int lineType){// 提取旋转矩形的四个角点 cv::Point2f ps[4]; rotatedrect.points(ps); // 构建轮廓线std::vector> tmpContours; // 创建一个InputArrayOfArrays 类型的点集 std::vector contours; for (int i = 0; i != 4; ++i) {contours.emplace_back(cv::Point2i(ps[i])); } tmpContours.insert(tmpContours.end(), contours); // 绘制轮廓,即旋转矩形 drawContours(mask, tmpContours, 0, color,thickness, lineType); // 填充mask}

    测试效果

    使用c++实现OpenCV绘制图形旋转矩形
    文章图片

    图1 原图 使用c++实现OpenCV绘制图形旋转矩形
    文章图片
    图2 绘制旋转矩形
    绘制旋转矩形首先需要得到旋转矩形的位置坐标,我经常配合cv::minAreaRect函数使用;
    得到坐标信息后,结合绘制轮廓线的drawContours函数,即可完成。
    以上就是使用c++实现OpenCV绘制图形旋转矩形的详细内容,更多关于c++实现OpenCV绘制的资料请关注脚本之家其它相关文章!

      推荐阅读