我正在尝试读取图像并将其转换为灰度然后显示它们两者的简单代码,最后保存灰度图像并在保存后显示。问题是保存的图像的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
答案 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)