【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制
生活随笔
收集整理的這篇文章主要介紹了
【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】几何图形(直线、矩形、圆、椭圆、多边形等)绘制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCV3】视频读写——cv::V
- 下一篇: 【OpenCV3】彩色映射——cv::a