写完图像后如何显示图像

时间:2019-10-13 08:54:19

标签: python opencv

我正在尝试读取图像并将其转换为灰度然后显示它们两者的简单代码,最后保存灰度图像并在保存后显示。问题是保存的图像的cv2.imshow(图像显示)不起作用。

写入图像之前的图像可以正确显示,并且图像可以正确保存在同一路径中,但是无法使用cv2.imshow显示。

''' python '''

import cv2  

img=cv2.imread('cover.jpg') 
cv2.imshow('image', img)  

img_grey = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)  
cv2.imshow('image_grey', img_grey) 

savedimage='new.jpg'  
cv2.imwrite('new.jpg',img_grey)  
cv2.imshow('testsavedimage',savedimage) 

cv2.waitKey(0)  

显示保存的图像时收到错误消息

File "C:/1.py", line 8, in <module>
cv2.imshow('testsavedimage',savedimage)
TypeError: Expected Ptr<cv::UMat> for argument '%s

1 个答案:

答案 0 :(得分:0)

在这种情况下,

savedimage只是一个字符串。如果要确保正确保存了灰度图像,则需要先将其读回Mat对象:

    cv2.imwrite('new.jpg',img_grey)
    savedImg = cv2.imread('new.jpg')
    cv2.imshow('testsavedimage', savedImg)

希望这会有所帮助。

(PS @Mark Setchel是正确的,您应该在此处使用cv2.COLOR_BGR2GRAY。这是因为imread()和imshow()默认为BGR颜色空间,而不是RGB)