如何在OpenCV Python中對兩張影像執行按位或運算?
在OpenCV中,彩色(RGB)影像表示為一個三維numpy陣列。影像的畫素值使用8位無符號整數(uint8)儲存,範圍從0到255。對兩張影像執行按位或運算是在對應影像的這些畫素值的二進位制表示上執行的。
語法
以下是執行兩張影像按位或運算的語法:
cv2.bitwise_or(img1, img2, mask=None)
img1和img2是兩個輸入影像,mask是掩碼操作。
步驟
要計算兩張影像之間的按位或運算,您可以使用以下步驟:
匯入所需的庫OpenCV、Numpy和Matplotlib。確保您已經安裝了它們。
import cv2 import numpy as np import matplotlib as plt
使用cv2.imread()方法讀取影像。影像的寬度和高度必須相同。
img1 = cv2.imread('waterfall.jpg') img2 = cv2.imread('work.jpg')
使用cv2.bitwise_or(img1, img2)計算兩張影像的按位或運算。
or_img = cv2.bitwise_or(img1,img2)
顯示按位或運算後的影像
cv2.imshow('Bitwise OR Image', or_img) cv2.waitKey(0) cv2.destroyAllWindows()
我們將在下面的示例中使用以下影像作為輸入檔案。
示例1
在下面的Python程式中,我們對兩張彩色影像計算按位或運算。
# import required libraries import cv2 # read two images. The size of both images must be the same. img1 = cv2.imread('waterfall.jpg') img2 = cv2.imread('work.jpg') # compute bitwise OR on both images or_img = cv2.bitwise_or(img1,img2) # display the computed bitwise OR image cv2.imshow('Bitwise OR Image', or_img) cv2.waitKey(0) cv2.destroyAllWindows()
輸出
執行此Python程式時,將產生以下輸出:
示例2
此Python程式顯示了對兩張影像應用按位或運算的應用。我們建立了兩張影像,第一張是圓形,第二張是相同大小的正方形。
# import required libraries import cv2 import numpy as np import matplotlib.pyplot as plt # define first image as a circle img1 = np.zeros((300, 300), dtype = "uint8") img1 = cv2.circle(img1, (150, 150), 150, 255, -1) # define second image as a square img2 = np.zeros((300,300), dtype="uint8") img2 = cv2.rectangle(img2, (25, 25), (275, 275), 255, -1) # perform bitwise OR on img1 and img2 or_img = cv2.bitwise_or(img1,img2) # Display the bitwise OR output image plt.subplot(131), plt.imshow(img1, 'gray'), plt.title("Circle") plt.subplot(132), plt.imshow(img2,'gray'), plt.title("Square") plt.subplot(133), plt.imshow(or_img, 'gray'), plt.title("Bitwise OR") plt.show()
輸出
執行此Python程式時,將產生以下輸出:
廣告