第十一天 二值化
阿新 • • 發佈:2018-11-03
注:二值化 cv.threshold型別參考地址
https://blog.csdn.net/u012566751/article/details/77046445
import cv2 as cv import numpy as np def custom_threshold(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 127,255, cv.THRESH_BINARY) #整體二值化大於127是黑色 小於127的是白色 #ret, binary = cv.threshold(gray, 127, 255,cv.WINDOW_AUTOSIZE) #小於127是黑色 大於127的是白色 print ("ret%s"%ret) cv.imshow("binary",binary) def local_threshold(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10) ##區域性二值化高斯取出均值 畫素塊均值大10就是白色其它是黑色 #ADAPTIVE_THRESH_MEAN_C的計算方法是計算出領域的平均值再減去第七個引數double #C的值 #ADAPTIVE_THRESH_GAUSSIAN_C的計算方法是計算出領域的高斯均值再減去第七個引數double # C的值 cv.imshow("binary", binary) def custom_threshold(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) h, w = gray.shape[:2] m = np.reshape(gray, [1, w*h]) ##轉化成一行多列的陣列 mean =m.sum() / (w*h) #陣列全部加和/w*h q去平均值 print("mean:",mean) ret,binary = cv.threshold(gray,mean,255,cv.THRESH_BINARY) cv.imshow("binary", binary) print("--------- Python OpenCV Tutorial ---------") src = cv.imread("C:/Users/weiqiangwen/Desktop/sest/data/lena.jpg") # cv.namedWindow("input contours",cv.WINDOW_AUTOSIZE) cv.imshow("contours", src) #custom_threshold(src) #local_threshold(src) custom_threshold(src) cv.waitKey(0) cv.destroyAllWindows()