函數(shù)polylines()可用來(lái)根據(jù)點(diǎn)集繪制多條相連的線段,也可用來(lái)繪制多邊形。
函數(shù)polylines()有兩種原型,這里只向大家介紹比較常用的那種原型。
函數(shù)polylines()的C++原型如下:
void cv::polylines(InputOutputArray img,
const Point *const * pts,
const int * npts,
int ncontours,
bool isClosed,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
函數(shù)polylines()的Python原型如下:
img=cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])
函數(shù)polylines()的參數(shù)意義如下:
img—繪制的多條相連線段或多邊形所在的圖像。
pts—存放點(diǎn)集坐標(biāo)的二維數(shù)組,它是一個(gè)指針的指針,要注意的是在Python-OpenCV中,其中每一個(gè)坐標(biāo)的數(shù)據(jù)類型為int32,而不能為常用的uint8。
npts—代表有幾組點(diǎn)集。
ncontours—代表有內(nèi)個(gè)輪廓。
isClosed—是否把繪制的多條線段首尾相連,顯示,如果要繪制多邊形,則這個(gè)參數(shù)值該置為true。
color—線條的顏色,用三通道表示。
thickness—線條的粗細(xì),這里不能取負(fù)值。
lineType—線條的類型,默認(rèn)值為L(zhǎng)INE_8。
shift—坐標(biāo)值的小數(shù)位數(shù)。
函數(shù)fillPoly()用于在圖像上繪制帶填充效果的多邊形。
函數(shù)fillPoly(也)有兩種原型,這里也只向大家介紹比較常用的那種原型。
C++原型如下:
void cv::fillPoly(InputOutputArray img,
const Point ** pts,
const int * npts,
int ncontours,
const Scalar & color,
int lineType = LINE_8,
int shift = 0,
Point offset = Point() )
Python原型如下:
img=cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]])
參數(shù)意義如下:
img—繪制的多邊形所在的圖像。
pts—存放多邊形頂點(diǎn)坐標(biāo)的二維數(shù)組,它是一個(gè)指針的指針,要注意的是在Python-OpenCV中,其中每一個(gè)坐標(biāo)的數(shù)據(jù)類型為int32,而不能為常用的uint8。
npts—代表有幾組點(diǎn)集。
ncontours—代表有內(nèi)個(gè)輪廓。
color—線條的顏色,用三通道表示。
lineType—線條的類型,默認(rèn)值為L(zhǎng)INE_8。
shift—坐標(biāo)值的小數(shù)位數(shù)。
offset—所有多邊形頂點(diǎn)坐標(biāo)的偏移量。
這兩個(gè)函數(shù)的Python示例代碼如下:
# -*- coding: utf-8 -*-
# 出處:昊虹AI筆記網(wǎng)(hhai.cc)
# 用心記錄計(jì)算機(jī)視覺(jué)和AI技術(shù)
# 博主微信/QQ 2487872782
# QQ群 271891601
# 歡迎技術(shù)交流與咨詢
# OpenCV的版本為4.4.0
import numpy as np
import cv2 as cv
if __name__ == '__main__':
img1 = np.zeros((200, 400, 3), dtype='uint8')
img2 = np.zeros((200, 400, 3), dtype='uint8')
img3 = np.zeros((200, 400, 3), dtype='uint8')
pts = np.array([[150, 33], [263, 40], [330, 100], [321, 180], [118, 90]], dtype='int32')
# 使用函數(shù)polylines()繪制多邊形
cv.polylines(img1, [pts], True, (255, 0, 0))
# 使用函數(shù)polylines()繪制多條線段
cv.polylines(img2, [pts], False, (255, 0, 0))
# 使用函數(shù)fillPoly()繪制帶填充效果的多邊形
cv.fillPoly(img3, [pts], (255, 0, 0))
cv.imshow('img1', img1)
cv.imshow('img2', img2)
cv.imshow('img3', img3)
cv.waitKey(0)
cv.destroyAllWindows()
運(yùn)行結(jié)果如下:
這兩個(gè)函數(shù)在C++環(huán)境下的示例代碼要復(fù)雜些,因?yàn)闋可娴街羔樀闹羔槨?br> 如果需要C++示例代碼,
請(qǐng)?jiān)L問(wèn)本博文的原文獲取,
本博文原文鏈接如下:
https://www.hhai.cc/thread-176-1-1.html文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-443827.html
這兩個(gè)函數(shù)的C++代碼運(yùn)行結(jié)果如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-443827.html
到了這里,關(guān)于使用OpenCV的函數(shù)polylines()繪制多條相連的線段和多邊形;使用函數(shù)fillPoly()繪制帶填充效果的多邊形的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!