OpenCV Python – 如何將彩色影像轉換為二值影像?
我們使用cv2.threshold()將灰度影像轉換為二值影像。要將彩色影像轉換為二值影像,我們首先使用cv2.cvtColor()將彩色影像轉換為灰度影像,然後對灰度影像應用cv2.threshold()。
步驟
可以按照以下步驟將彩色影像轉換為二值影像:
匯入所需的庫。在以下所有示例中,所需的 Python 庫是OpenCV。確保您已安裝它。
使用cv2.imread()讀取輸入影像。使用此方法讀取的 RGB 影像是 BGR 格式。可以選擇將讀取的 BGR 影像分配給 img。
現在,使用cv2.cvtColor()函式,將此 BGR 影像轉換為灰度影像,如下所示。可以選擇將轉換後的灰度影像分配給 gray。
對灰度影像 gray 應用閾值處理cv2.threshold()將其轉換為二值影像。調整第二個引數 (threshValue) 以獲得更好的二值影像。
顯示轉換後的二值影像。
讓我們看一些例子,以便更清楚地理解這個問題。
我們將在下面的示例中使用以下影像作為輸入檔案。
示例
在這個 Python 程式中,我們將彩色影像轉換為二值影像。我們還顯示二值影像。
# import required libraries import cv2 # load the input image img = cv2.imread('architecture1.jpg') # convert the input image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # apply thresholding to convert grayscale to binary image ret,thresh = cv2.threshold(gray,70,255,0) # Display the Binary Image cv2.imshow("Binary Image", thresh) cv2.waitKey(0) cv2.destroyAllWindows()
輸出
執行上述程式後,將生成以下輸出視窗,顯示二值影像。
示例
在這個示例中,我們將彩色影像轉換為二值影像。我們還顯示原始影像、灰度影像和二值影像。
# import required libraries import cv2 import matplotlib.pyplot as plt # load the input image img = cv2.imread('architecture1.jpg') # convert the input image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # apply thresholding to convert grayscale to binary image ret,thresh = cv2.threshold(gray,70,255,0) # convert BGR to RGB to display using matplotlib imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # display Original, Grayscale and Binary Images plt.subplot(131),plt.imshow(imgRGB,cmap = 'gray'),plt.title('Original Image'), plt.axis('off') plt.subplot(132),plt.imshow(gray,cmap = 'gray'),plt.title('Grayscale Image'),plt.axis('off') plt.subplot(133),plt.imshow(thresh,cmap = 'gray'),plt.title('Binary Image'),plt.axis('off') plt.show()
輸出
執行上述程式後,將生成以下輸出視窗,顯示原始影像、灰度影像和二值影像。
注意灰度影像和二值影像之間的區別。二值影像只有兩種顏色:白色和黑色。二值影像的畫素值要麼為 0(黑色),要麼為 255(白色)。
廣告