cv2.imshow 和 numpy.dstack 核心被转储



我正在尝试将两个图像堆叠在一起,这样我就可以在一个窗口中显示它们。第一张图像是原始的 3 通道图像,第二张是灰色版本。我用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 通道图像。

正如评论中所建议的,请尝试使用 cv2.merge,因为显然它与np.dstack不同:

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

有关更多信息,请参阅 @fraxel 的链接

相关内容

  • 没有找到相关文章

最新更新