OpenCV

画像処理 「OpenCV 4」ビット演算

OpenCVでは、ビット演算子(AND, OR, NOT, XOR)を使用したビットレベルの演算が提供されています。

例えば、マスク処理や比較や一般的な計算に使用することが想定されます。

サンプルコード

import cv2
import numpy as np
import matplotlib.pyplot as plt

image_a = cv2.imread("image_a.png", 0)
image_b = cv2.imread("image_b.png", 0)

bitwise_or = cv2.bitwise_or(image_a, image_b)

bitwise_and = cv2.bitwise_and(image_a, image_b)

bitwise_xor = cv2.bitwise_xor(image_a, image_b)

bitwise_not_1 = cv2.bitwise_not(image_a)

bitwise_not_2 = cv2.bitwise_not(image_b)

plt.subplot(3, 3, 1)
plt.title("image_a")
plt.imshow(cv2.cvtColor(image_a, cv2.COLOR_GRAY2BGR))
plt.xticks([]), plt.yticks([])

plt.subplot(3, 3, 2)
plt.title("image_b")
plt.imshow(cv2.cvtColor(image_b, cv2.COLOR_GRAY2BGR))
plt.xticks([]), plt.yticks([])

plt.subplot(3, 3, 4)
plt.title("image_a OR image_b")
plt.imshow(cv2.cvtColor(bitwise_or, cv2.COLOR_GRAY2BGR))
plt.xticks([]), plt.yticks([])

plt.subplot(3, 3, 5)
plt.title("image_a AND image_b")
plt.imshow(cv2.cvtColor(bitwise_and, cv2.COLOR_GRAY2BGR))
plt.xticks([]), plt.yticks([])

plt.subplot(3, 3, 6)
plt.title("image_a XOR image_b")
plt.imshow(cv2.cvtColor(bitwise_xor, cv2.COLOR_GRAY2BGR))
plt.xticks([]), plt.yticks([])

plt.subplot(3, 3, 7)
plt.title("NOT image_a")
plt.imshow(cv2.cvtColor(bitwise_not_1, cv2.COLOR_GRAY2BGR))
plt.xticks([]), plt.yticks([])

plt.subplot(3, 3, 8)
plt.title("NOT image_b")
plt.imshow(cv2.cvtColor(bitwise_not_2, cv2.COLOR_GRAY2BGR))
plt.xticks([]), plt.yticks([])

plt.show()
実行結果

とてもシンプルにAND、OR、XOR、NOTが使用できることを確認できました。これは、使い勝手が良いですね!