opencv學習筆記(15)輪廓發現

2021-10-19 14:11:48 字數 3064 閱讀 8015

參考: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...