【发布时间】:2017-09-06 23:18:31
【问题描述】:
在this question 的回答中,我想以原始颜色显示图像,因此从这行代码中删除了gray 参数:
plt.imshow(im_out, 'gray')
但是,当我这样做时,我得到的图像显示为黄色和紫色,而不是图像的原始颜色。
我应该怎么做才能以原始颜色显示图像?
谢谢。
EDIT 1我遇到了this tutorial,看来我应该使用:
plt.imshow(cv2.cvtColor(im_out, cv2.COLOR_BGR2RGB))
但是,当我这样做时,我得到了以下信息:
Calculated scale difference: 0.99
Calculated rotation difference: 44.51
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/user/opencv/modules/imgproc/src/color.cpp, line 10606
Traceback (most recent call last):
File "align_surf.py", line 47, in <module>
deskew()
File "align_surf.py", line 9, in deskew
plt.imshow(cv2.cvtColor(im_out, cv2.COLOR_BGR2RGB))
cv2.error: /home/user/opencv/modules/imgproc/src/color.cpp:10606: error: (-215) scn == 3 || scn == 4 in function cvtColor
我该如何解决这个问题?
EDIT 2上面的原因是在原代码中图片被读取如下:
orig_image = cv2.imread('1.jpg', 0)
所以,我只是删除了0。
【问题讨论】:
-
文档中并不清楚,但根据 c++ 文档,删除 0 大概默认为 '1':docs.opencv.org/2.4/modules/highgui/doc/…
-
另外,
plt.imshow(img, 'gray')指示 matplotlib 使用gray颜色图显示图像img;即暗示img是灰度图像。否则,在“彩色”图像上指定颜色图是没有意义的。
标签: python matplotlib surf