參考:python-opencv2利用cv2.findcontours()函式來查詢檢測物體的輪廓
試驗用圖:
()效果:
tips:
1.如果二值化之後的影象的底色是白色,那麼最後的繪圖會把整張框進去,如圖所示(第三章的邊框是綠色的):
這行**因opencv版本而異,opencv2.x和4.x只需要寫成
而opencv3.x要寫成第一行那種。
#coding=
utf-
8import cv2 as cv
import numpy as np
def edge_demo
(image)
: blurred = cv.
gaussianblur
(image,(3
,3),
0)gray = cv.
cvtcolor
(blurred,cv.
color_bgr2gray
) grad_x = cv.
sobel
(gray,cv.
cv_16sc1,1
,0) grad_y = cv.
sobel
(gray,cv.
cv_16sc1,0
,1) #edge_output = cv.
canny
(image,50,
150)
# canny的高低閾值比例一般為1:2或1:3
edge_output = cv.
canny
(grad_x,grad_y,50,
150)
return edge_output
def contours_demo
(image)
: binary =
edge_demo
(image)
cv.imshow
("binary"
,binary)
cloneimage,contours,heriachy = cv.
findcontours
(binary,cv.
retr_tree
,cv.
)for i,contour in
enumerate
(contours)
: cv.
drawcontours
(image,contours,i,(0
,255,0
),2)
cv.imshow
("detect contours"
,image)
scr = cv.
imread
("d:/academic/picture/opencv_data/pic3.png"
)cv.
imshow
("input image"
,scr)
contours_demo
(scr)
cv.waitkey(0
)cv.
destroyallwindows
()
效果:
opencv學習(四)輪廓識別
本章學習輪廓識別 bbb.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std using namespace cv int tmain size refs size int captrefrnc.get cv cap prop...
opencv學習 9 輪廓提取
輪廓提取 主要針對二值影象 1 輪廓分為外輪廓和內輪廓 如下圖 外輪廓以c開頭 內輪廓以h開頭 其中img是二值影象,storage是記憶體儲存序列,contours指向儲存的第乙個輪廓,cvmemstorage storage cvcreatememstorage 0 記憶體儲存序列 cvseq ...
opencv 9 輪廓 性質
邊界矩形的寬高比 x,y,w,h cv2.boundingrect cnt aspect ratio float w h輪廓面積與邊界矩形面積的比 area cv2.contourarea cnt x,y,w,h cv2.boundingrect cnt rect area w h extent f...