from matplotlib import pyplot as plt # cv2.imread()用於讀取圖片文件 # imread函數有兩個參數,第一個參數是圖片路徑,第二個參數表示讀取圖片的形式 image = cv2.imread('shengwuxibao.jpg') # cv2.cvtColor(p1,p2) 是顏色空間轉換函數,p1是需要轉換的圖片,p2是轉換成何種格式。 # cv2.COLOR_BGR2GRAY 將BGR格式轉換成灰度圖片 gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # plt.subplot(131) # 其中131表示我們整個圖是由一行三列的子圖構成的 # cv2.imShow()函數可以在窗口中顯示圖像 plt.subplot(131),plt.imshow(image,'gray') # xticks :設置x軸 y軸的位置 plt.title('source image'),plt.xticks([]),plt.yticks([]) # hist:在x軸上繪制定量數據的分布特征(用於連續數據,而柱狀圖用於離散數據) # image.ravel():將多為數組降為一維數組。 256是bins 每32為是1bin 總共8個bin plt.subplot(132),plt.hist(image.ravel(),256) plt.title('Histogram'),plt.xticks([]),plt.yticks([]) #v2.threshold()函數:在opencv中比較常用,但一開始不是很理解是什么意思。 #Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst #src:表示的是圖片源 #thresh:表示的是閾值(起始值) #maxval:表示的是最大值 #type:表示的是這里划分的時候使用的是什么類型的算法**,常用值為0(cv2.THRESH_BINARY)** # 返回兩個參數 ret1 應該是閾值分割點 th1 應該是 經過處理后的圖片 # cv2.THRESH_BINARY(黑白二值) # cv2.THRESH_BINARY_INV(黑白二值反轉) ret1,th1 = cv2.threshold(gray,0,255,cv2.THRESH_OTSU) print('ret1',ret1) print('th1',th1) plt.subplot(133),plt.imshow(th1,'gray') plt.title('OTSU,threshold is'+str(ret1)),plt.xticks([]),plt.yticks([]) plt.show()
截圖: