5

2 つの画像を重ね合わせようとしているので、両方を 1 つのウィンドウに表示できます。最初の画像は元の 3 チャンネルの画像で、2 番目の画像はグレー バージョンです。cv2.cvtColor で色変換を行い、 numpy.dstack で 3 チャンネルに戻しました。 cv2.imshow試すと、「コア ダンプ」エラーが発生します。何か不足していますか?numpy.hstack でそれらをスタックするには、両方の画像が同じ数のチャネルを持つ必要があります。これは、Ubuntu 64 ビット マシンで発生します。

import cv2
import numpy as np

img = cv2.imread("/home/bernie/Dropbox/Python/Opencv/lena512.jpg")

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.dstack((gray,gray,gray))

#res = np.hstack((img,gray))

print gray.dtype
print gray.shape

cv2.imshow('gray',gray)
#cv2.imshow('res',res)
cv2.waitKey()

添加

一方、

gray = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)

7行目は問題なく動作するので、今のところこれに固執します。これは、 cv2.cvtColorの結果とnumpy.dstackの結果に違いがあり、1 チャンネルの画像を同じ値で 3 チャンネルに変換することを意味します。

4

1 に答える 1

2

コメントで示唆されているように、cv2.merge明らかに とは異なるストライドであるため、使用してみてくださいnp.dstack:

gray = cv2.merge([gray]*3)

詳細については、@ fraxelリンクを参照してください。

于 2013-03-05T18:25:05.603 に答える