python opencv3 輪廓檢測

2021-10-01 03:51:36 字數 1680 閱讀 1111

git:

1

#coding:utf823

import

cv24

import

numpy as np56

#建立乙個200*200 的黑色空白影象

7 img = np.zeros((200, 200), dtype=np.uint8)8#

在影象的**位置 放置乙個100*100的白色方塊

9 img[50:150, 50: 150] = 255

1011 cv2.imshow("

image

", img)12#

二值化操作

13 ret, thresh = cv2.threshold(img, 127, 255, 0)

14"""

15ret, dst = cv2.threshold(src, thresh, value, type)

16引數:

17src: 原影象

18thresh: 閾值

19value: 新值 大於或小於閾值的值將賦新值

20type: 方法型別,有如下取值:

21cv2.thresh_binary 黑白二值

22cv2.thresh_binary_inv 黑白二值翻轉

23cv2.thresh_trunc 得到多畫素值

24cv2.thresh_tozero

25cv2.thresh_tozero_inv

26返回值:

27ret: 得到的閾值值

28dst: 閾值化後的影象

29"""

3031

#得到 修改後的影象, 輪廓, 輪廓的層次

32 image, contours, hierarchy =cv2.findcontours(

33thresh,

34cv2.retr_tree,

3536)37

38"""

39img, contours, hierarchy = cv2.findcontours(輸入影象, 層次型別, 逼近方法)

40引數:

41輸入影象: 該方法會修改輸入影象,建議傳入輸入影象的拷貝

42層次型別:

43cv2.retr_tree 會得到影象中整體輪廓層次

44cv2.retr_external 只得到最外面的輪廓

45逼近方法:

4647

返回值:

48img: 修改後的影象

49contours: 影象的輪廓

50hierarchy: 影象和輪廓的層次

5152

"""53

#原影象轉換成bgr影象

54 color =cv2.cvtcolor(img, cv2.color_gray2bgr)55#

用綠色 在原影象上畫出輪廓

(26)輪廓發現

輪廓發現 區別於輪廓和邊緣的概念,輪廓也是有一定梯度層次的,有大的小的不同的輪廓 輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法。所以邊緣提取的閾值選定會影響最終輪廓發現結果。api介紹 findcontours發現輪廓 在灰度影象上進行輪廓發現 cv findcontours inputout...

27 輪廓發現

輪廓發現是基於影象邊緣提取的基礎,尋找物件輪廓的方法。所以邊緣提取的閾值的選定會影響最終輪廓發現的結果。include include include using namespace cv using namespace std int thresholdvlaue 100 int threshol...

29 輪廓發現

輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法,所以邊緣提取的閾值選定會影響最終輪廓發現結果 cv findcontours inputoutputarray binimg,輸入影象,非0的畫素被看成1,0的畫素值保持不變,8 bit outputarrayofarrays contours,全...