最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
怎么在Python中使用OpenCV標(biāo)記圖像區(qū)域輪廓-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在Python中使用OpenCV標(biāo)記圖像區(qū)域輪廓,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)長(zhǎng)期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為雙陽(yáng)企業(yè)提供專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì),雙陽(yáng)網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

圖片基本處理

import cv2 as cv

src = cv.imread("./demo.jpg")

gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
# cv.imshow("src", src)

gray = cv.GaussianBlur(gray, (5, 5), 0)
edges = cv.Canny(gray, 70, 210)

cv.imshow("edged", edges)

輪廓檢測(cè)


下面就是檢測(cè)圖像輪廓具體位置的代碼了:

contours, hierarchy = cv.findContours(edges.copy(), cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
print(f"輪廓數(shù)量:{len(contours)}")

cv.findContours(edges, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE) 中,第二個(gè)參數(shù)使用的是cv.RETR_LIST,該參數(shù)值表示檢測(cè)所有輪廓,不建立等級(jí)關(guān)系,彼此獨(dú)立。如果只想獲取輪廓邊緣信息,不關(guān)心是否嵌套在另一個(gè)輪廓之內(nèi),使用該參數(shù)值即可。

第三個(gè)參數(shù)使用的是cv.CHAIN_APPROX_SIMPLE,表示壓縮水平方向,垂直方向,對(duì)角線方向的元素,只保留該方向的終點(diǎn)坐標(biāo),例如一個(gè)矩形輪廓只需 4 個(gè)點(diǎn)來(lái)保存輪廓信息,這也是為了后面便于計(jì)算。

觀察上圖,可以發(fā)現(xiàn)最外側(cè)的邊緣面積是較大的,所以依據(jù)面積進(jìn)行排序,依據(jù)其他值也可以,獲取面積較大的輪廓。

contours = sorted(contours, key = cv.contourArea, reverse = True)[:3]

對(duì)輪廓進(jìn)行簡(jiǎn)單繪制,獲得下圖效果。

cv.drawContours(src,contours,-1,(0,0,255),2)

遍歷輪廓,計(jì)算輪廓近似


先看代碼:

# 遍歷輪廓
for c in contours:
	# 計(jì)算輪廓近似
	peri = cv.arcLength(c, True)
	approx = cv.approxPolyDP(c, 0.02 * peri, True)

一個(gè)新的函數(shù)cv.arcLength,該函數(shù)的原型如下:

retval = cv2.arcLength(curve, closed)

該函數(shù)用于計(jì)算輪廓的周長(zhǎng)。

下面的cv.approxPolyDP 函數(shù)原型如下:

approxCurve = cv2.approxPolyDP(curve, epsilon, closed[, approxCurve])

函數(shù)參數(shù)如下:

  • curve:源圖像的某個(gè)輪廓;

  • epsilon:距離值,表示多邊形的輪廓接近實(shí)際輪廓的程度,值越小,越精確;

  • closed:輪廓是否閉合。

最重要的參數(shù)就是epsilon 簡(jiǎn)單記憶為:該值越小,得到的多邊形角點(diǎn)越多,輪廓越接近實(shí)際輪廓,該參數(shù)是一個(gè)準(zhǔn)確度參數(shù)。

該函數(shù)返回值為輪廓近似多邊形的角點(diǎn)。

繪制輪廓

最后判斷,當(dāng)上文返回的角點(diǎn)為 4 的時(shí)候,提取輪廓,代碼如下:

# 遍歷輪廓
for c in contours:
	# 計(jì)算輪廓近似
	peri = cv.arcLength(c, True)
	approx = cv.approxPolyDP(c, 0.02 * peri, True)

	# 當(dāng)恰好是 4 個(gè)角點(diǎn)的時(shí)候,獲取輪廓。
	if len(approx) == 4:
		screen_cnt = approx
		break

# 結(jié)果顯示
cv.drawContours(src, [screen_cnt], -1, (0, 0, 255), 2)

更換圖片,進(jìn)行再次輪廓檢測(cè),注意修改輪廓近似部分代碼即可。

# 遍歷輪廓
for c in contours:
  # 計(jì)算輪廓近似

  approx = cv.approxPolyDP(c, 30, True)

  if len(approx) == 4:
    screen_cnt = approx
    break

上述就是小編為大家分享的怎么在Python中使用OpenCV標(biāo)記圖像區(qū)域輪廓了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章名稱:怎么在Python中使用OpenCV標(biāo)記圖像區(qū)域輪廓-創(chuàng)新互聯(lián)
文章位置:http://fisionsoft.com.cn/article/cecoip.html