git:https://github.com/linyi0604/Computer-Vision
1 # coding:utf8
2
3 import cv2 4 import numpy as np 5
6 # 創建一個200*200 的黑色空白圖像
7 img = np.zeros((200, 200), dtype=np.uint8) 8 # 在圖像的中央位置 放置一個100*100的白色方塊
9 img[50:150, 50: 150] = 255
10
11 cv2.imshow("image", img) 12 # 二值化操作
13 ret, thresh = cv2.threshold(img, 127, 255, 0) 14 """
15 ret, dst = cv2.threshold(src, thresh, value, type) 16 參數: 17 src: 原圖像 18 thresh: 閾值 19 value: 新值 大於或小於閾值的值將賦新值 20 type: 方法類型,有如下取值: 21 cv2.THRESH_BINARY 黑白二值 22 cv2.THRESH_BINARY_INV 黑白二值翻轉 23 cv2.THRESH_TRUNC 得到多像素值 24 cv2.THRESH_TOZERO 25 cv2.THRESH_TOZERO_INV 26 返回值: 27 ret: 得到的閾值值 28 dst: 閾值化后的圖像 29 """
30
31 # 得到 修改后的圖像, 輪廓, 輪廓的層次
32 image, contours, hierarchy = cv2.findContours( 33 thresh, 34 cv2.RETR_TREE, 35 cv2.CHAIN_APPROX_SIMPLE 36 ) 37
38 """
39 img, contours, hierarchy = cv2.findContours(輸入圖像, 層次類型, 逼近方法) 40 參數: 41 輸入圖像: 該方法會修改輸入圖像,建議傳入輸入圖像的拷貝 42 層次類型: 43 cv2.RETR_TREE 會得到圖像中整體輪廓層次 44 cv2.RETR_EXTERNAL 只得到最外面的輪廓 45 逼近方法: 46
47 返回值: 48 img: 修改后的圖像 49 contours: 圖像的輪廓 50 hierarchy: 圖像和輪廓的層次 51
52 """
53 # 原圖像轉換成bgr圖像
54 color = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) 55 # 用綠色 在原圖像上畫出輪廓
56 img = cv2.drawContours(color, contours, -1, (0, 255, 255), 2) 57
58 cv2.imshow("contours", color) 59 cv2.waitKey() 60 cv2.destroyAllWindows()