imageCorrespondence = cv2.drawMatches(imageLeft, kpLeft, imageRight, kpRight, [goodMatches[0]], None, flags=2)
cv2.imwrite('imageCorrespondence.png', imageCorrespondence)
在jupyter notebook中给出了预期的输出,但是当我使用python脚本保存文件时,它正在绘制匹配项,flags=4
正在绘制关键点,除了所有事情都发生在一个黑色图像上(右尺寸:左+右组合)。在
可能存在后端选择问题,如matplotlib
?在
示例代码工作正常:
^{pr2}$但是当我开始使用这个函数来处理从别处加载的其他图像时,它就会破坏某些东西。我确定如果这些图像有内容并且cv2.imwrite('imageLeft', imageLeft)
工作正常,图像也能很好地保存。在
我最初以为第六个参数
None
引起了这种情况,但这并没有造成任何麻烦。在cv2.drawMatches()
接受imageLeft和imageRight作为numpy数组,如docs中所述:但是,如果你碰巧在numpy数组中加载alpha层,它将绘制一个黑色图像。当我手动移除numpy数组中的alpha层并且只有三个通道时,它开始正常工作。这可能是因为
matplotlib
处理alpha层的方式与cv2.imwrite
处理相同层的方式不同,它似乎可以在Jupyter笔记本中工作,但不使用Python脚本。在我最初以为我需要从BGRA切换到ABGR,但BGRA并不是这样的,如果输入图像有第四个alpha层,我就会得到一个黑屏。在读取图像时,Opencv通常会剥离alpha层。。。!在
相关问题 更多 >
编程相关推荐