pylab imshow 颜色没有完全显示
pylab imshow color not fully showing
我一直在尝试通过 pylab 对打开的图像实施一些图像处理技术。问题是,我可以通过 pylab 打开并查看图像,但颜色似乎非常不同。好像没有显示红色。
The image shown with Pylab
The original image (and when it is shown with cv2.imshow
任何人都可以帮助我使 pylab 正常工作吗?
非常感谢!
OpenCV 和 Matplotlib 中使用的颜色顺序不同,颜色显示不同:
- OpenCV 默认使用 BGR 格式。
- Matplotlib 默认使用 RGB 格式。
如您所见,通道是颠倒的,因此您会得到一个奇怪的彩色物体。
情况一:如果你使用cv2.imread()
读取图像
- 你可以用
cv2.imshow()
显示没有任何问题。
- 但是如果您使用 Matplotlib 的
imshow()
显示它,那么您必须反转通道。 plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
情况2:如果你使用cv2.imread()
读取图像
- 用Matplotlib的
plt.imshow()
可以正常显示。
- 但是如果您使用 OpenCV 的
cv2.imshow()
显示它,那么您必须再次反转通道。 cv2.imshow(cv2.cvtColor(image, cv2.COLOR_RGB2BGR))
案例 3: 如果您不确定您的图像是如何读取的,只需交换第一个和最后一个通道:
cv2.imshow('Image', im[...,::-1])
我一直在尝试通过 pylab 对打开的图像实施一些图像处理技术。问题是,我可以通过 pylab 打开并查看图像,但颜色似乎非常不同。好像没有显示红色。
The image shown with Pylab
The original image (and when it is shown with cv2.imshow
任何人都可以帮助我使 pylab 正常工作吗? 非常感谢!
OpenCV 和 Matplotlib 中使用的颜色顺序不同,颜色显示不同:
- OpenCV 默认使用 BGR 格式。
- Matplotlib 默认使用 RGB 格式。
如您所见,通道是颠倒的,因此您会得到一个奇怪的彩色物体。
情况一:如果你使用cv2.imread()
- 你可以用
cv2.imshow()
显示没有任何问题。 - 但是如果您使用 Matplotlib 的
imshow()
显示它,那么您必须反转通道。plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
情况2:如果你使用cv2.imread()
- 用Matplotlib的
plt.imshow()
可以正常显示。 - 但是如果您使用 OpenCV 的
cv2.imshow()
显示它,那么您必须再次反转通道。cv2.imshow(cv2.cvtColor(image, cv2.COLOR_RGB2BGR))
案例 3: 如果您不确定您的图像是如何读取的,只需交换第一个和最后一个通道:
cv2.imshow('Image', im[...,::-1])