日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OpenCV3】旋转矩形(cv::RotateRect)的绘制

發布時間:2025/3/21 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OpenCV3】旋转矩形(cv::RotateRect)的绘制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在OpenCV3中的繪圖詳解中,我們詳細地介紹了opencv3中所支持的各種幾何形狀的繪制,其中矩形的繪制接口為cv::rectangle(),但是這個接口只能用于繪制正常矩形(即cv::Rect定義的矩形,長是水平,高是豎直),但不支持旋轉矩形(cv::RotateRect)的繪制。比如我們使用如下代碼,通過若干點來擬合橢圓(cv::fitEllipse()),擬合出的橢圓是以橢圓的外接矩形呈現的,這個橢圓的外接矩形就是一個旋轉矩形。


//創建一個用于繪制圖像的空白圖 cv::Mat image = cv::Mat::ones(480, 640, CV_8UC3);//設置藍色背景image.setTo(cv::Scalar(100, 0, 0));//輸入擬合點 std::vector<cv::Point> points;points.push_back(cv::Point(200, 240));points.push_back(cv::Point(300, 400));points.push_back(cv::Point(400, 360));points.push_back(cv::Point(500, 300));points.push_back(cv::Point(500, 200));points.push_back(cv::Point(300, 150));//將擬合點繪制到空白圖上 for (int i = 0; i < points.size(); i++){cv::circle(image, points[i], 5, cv::Scalar(0, 0, 255), 2, 8, 0);}//獲取擬合橢圓的外包圍矩形cv::RotatedRect rotate_rect = cv::fitEllipse(points);//繪制擬合橢圓cv::ellipse(image, rotate_rect, cv::Scalar(0, 255, 255), 2, 8);cv::imshow("image", image);cv::waitKey(0);


從代碼中可以看出,我們可以使用cv::ellipse()來繪制橢圓。但是,如果我們想將這個外接的旋轉矩形也繪制出來的話,該怎么操作?opencv中有沒有提供專門用于繪制旋轉矩形的函數?很遺憾,沒有。


下面介紹兩種種解決旋轉矩形的繪制問題的方案。


1、使用cv::line()逐條邊繪制

代碼如下:

//獲取旋轉矩形的四個頂點cv::Point2f* vertices = new cv::Point2f[4];rotate_rect.points(vertices);//逐條邊繪制for (int j = 0; j < 4; j++){cv::line(image, vertices[j], vertices[(j + 1) % 4], cv::Scalar(0, 255, 0));}

結果如下:



2、使用cv::drawContours()函數進行繪制

代碼如下:

//獲取旋轉矩形的四個頂點cv::Point2f* vertices = new cv::Point2f[4];rotate_rect.points(vertices);std::vector<cv::Point> contour;for (int i = 0; i < 4; i++){contour.push_back(vertices[i]);}std::vector<std::vector<cv::Point>> contours;contours.push_back(contour);cv::drawContours(image, contours, 0, cv::Scalar(255, 255, 0), 1);

結果如下:




2017.04.11

總結

以上是生活随笔為你收集整理的【OpenCV3】旋转矩形(cv::RotateRect)的绘制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。