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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在圖像處理的過程中,我們有時需要在圖像或者視頻上畫上一些圖案或者繪上一些文字。OpenCV中提供了各種功能的繪圖函數,使用這些函數,我們可以在圖像上繪制直線、矩形、圓、橢圓、多邊形等等。

1、cv::circle()

cv::circle()是OpenCV在圖像上繪制圓的函數,調用形式如下:

void circle(cv::Mat& img, // 待繪制的圖像cv::Point center, // 圓心位置int radius, // 圓的半徑const cv::Scalar& color, // 線條的顏色(RGB)int thickness = 1, // 線寬int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);

2、cv::clipLine()

cv::clipLine()是判斷一條直線是否在某個矩形內,有以下兩種形式:

bool clipLine( // 如果直線line任何一部分在矩形 'imgRect'內,則返回truecv::Rect imgRect, // 要穿過的矩形cv::Point& pt1, // 直線的第一個端點cv::Point& pt2 // 直線的第二個端點);bool clipLine( // 如果直線line任何一部分在圖像大小Size內,則返回truecv::Size imgSize, // 圖像的大小,相當于矩形的端點在(0,0)cv::Point& pt1, // 直線的第一個端點cv::Point& pt2 // 直線的第二個端點);

3、cv::ellipse()

cv::ellipse()是繪制橢圓和橢圓弧線(部分橢圓)的函數,有以下兩種形式:

bool ellipse(cv::Mat& img, // 待繪制的圖像cv::Point center, // 橢圓中心cv::Size axes, // 橢圓長軸和短軸的長度double angle, // 長軸傾角double startAngle, // 弧度繪制的起始角度double endAngle, // 弧度繪制的const cv::Scalar& color, // 線條的顏色(RGB)int thickness = 1, // 線寬int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);bool ellipse(cv::Mat& img, // 待繪制的圖像const cv::RotatedRect& rect, // 橢圓的外切矩形const cv::Scalar& color, // 線條的顏色(RGB)int thickness = 1, // 線寬int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);

4、cv::fillConvexPoly()

cv::fillConvexPoly()用于繪制封閉多邊形,注意:輸入的多邊形不能出現交叉,否則會出錯。具體形式如下:

void fillConvexPoly(cv::Mat& img, // 待繪制的圖像const cv::Point* pts, // c風格的點序列int npts, // 'pts'中點的數目const cv::Scalar& color, // 線條的顏色(RGB)int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);

5、cv::fillPoly()

cv::fillPoly()用于繪制任意數目的封閉多邊形。多邊形可以出現交叉。具體形式如下:

void fillPoly(cv::Mat& img, // 待繪制的圖像const cv::Point** pts, // c風格的點序列的序列int* npts, // 'pts[i]'中點的數目int ncontours, // 'pts'中的序列數const cv::Scalar& color, // 線條的顏色(RGB)int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0, // 偏移量cv::Point offset = Point() // 整體偏移量);

6、cv::line()

cv::line()用于直線的繪制,具體形式如下:

void line(cv::Mat& img, // 待繪制的圖像cv::Point pt1, // 直線的第一個端點cv::Point pt2 // 直線的第二個端點const cv::Scalar& color, // 線條的顏色(RGB)int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);

7、cv::rectangle()

cv::rectangle()用于矩形的繪制,有以下兩種形式:

void rectangle(cv::Mat& img, // 待繪制的圖像cv::Point pt1, // 矩形的第一個頂點cv::Point pt2 // 矩形的對角頂點const cv::Scalar& color, // 線條的顏色(RGB)int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);void rectangle(cv::Mat& img, // 待繪制的圖像cv::Rect r, // 待繪制的矩形const cv::Scalar& color, // 線條的顏色(RGB)int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);

8、cv::polyLines()

cv::polyLines()用于繪制非封閉多邊形(即折線),具體形式如下:

void polyLines(cv::Mat& img, // 待繪制的圖像const cv::Point** pts, // c風格的點序列的序列int* npts, // 'pts[i]'中點的數目int ncontours, // 'pts'中的序列數bool isClosed, // 如果是true, 則連接首尾兩點const cv::Scalar& color, // 線條的顏色(RGB)int lineType = 8, // 線型(4鄰域或8鄰域,默認8鄰域)int shift = 0 // 偏移量);

2017.03.30


總結

以上是生活随笔為你收集整理的【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制的全部內容,希望文章能夠幫你解決所遇到的問題。

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