画像をインポートしただけです。各BGRチャネルをゼロ配列とマージしてから表示したいと思います。私は次のようにコードを書きました:
import cv2
import numpy as np
image = cv2.imread('./images/input.jpg')
B, G, R = cv2.split(image)
zeros = np.zeros((image.shape[:2]), dtype = 'int8')
cv2.imshow("Red", cv2.merge([zeros1, zeros1, R]))
cv2.imshow("Green", cv2.merge([zeros, G, zeros]))
cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))
cv2.waitKey(500)
cv2.destroyAllWindows()
このコードを実行した後、次のエラーが発生します。
error Traceback (most recent call last)
<ipython-input-13-9252d63ed763> in <module>
7 zeros = np.zeros((image.shape[:2]), dtype = 'int8')
8
----> 9 cv2.imshow("Red", cv2.merge([zeros1, zeros1, R]))
10 cv2.imshow("Green", cv2.merge([zeros, G, zeros]))
11 cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))
error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\core\src\merge.dispatch.cpp:129: error: (-215:Assertion failed) mv[i].size == mv[0].size && mv[i].depth() == depth in function 'cv::merge'
それは私には正しいようです。問題は何ですか?これを修正するにはどうすればよいですか?
ここにエラーがあります:
zeros = np.zeros((image.shape[:2]), dtype = 'int8')
dtypeは画像と同じである必要がありuint8
ます。
ところで、あなたはただ画像を見せたいだけで、マージすることを気にしないと思いますか?
次に、単一のチャネルでGRAYからBGRへの変換を行うことができます。
cv2.imshow("Red", cv2.cvtColor(R, cv2.COLOR_GRAY2BGR))
cv2.imshow("Green", cv2.cvtColor(G, cv2.COLOR_GRAY2BGR))
cv2.imshow("Blue", cv2.cvtColor(B, cv2.COLOR_GRAY2BGR))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加