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,全...