Image opencv中的RGB2BGR无法正确转换颜色

Image opencv中的RGB2BGR无法正确转换颜色,image,opencv,Image,Opencv,为什么颜色\u RGB2BGR不能正确转换颜色 我试图保持红色,但它会将其变为紫色。这是正常情况。因为如果在将源图像转换为BGR时,它是RGB格式的,则其通道顺序当然会改变。所以这很正常 例如: pil_image = Image.open('1.png') opencvImage = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR) plt.imshow(pil_image) 注意:您可以使用此选项检查像素值。只要改变频道的顺序,你就

为什么
颜色\u RGB2BGR
不能正确转换颜色


我试图保持红色,但它会将其变为紫色。

这是正常情况。因为如果在将源图像转换为BGR时,它是RGB格式的,则其通道顺序当然会改变。所以这很正常

例如:

pil_image = Image.open('1.png')
opencvImage = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)

plt.imshow(pil_image)
注意:您可以使用此选项检查像素值。只要改变频道的顺序,你就会明白


以下是以前讨论过的问题。

当您使用PIL打开图像时,如下所示:

if pixel of source = (12,102,53) = (R,G,B)  then this will become
                     (53,102,12) = (B,G,R)
你会得到一个RGB图像

然后(不必要地)将其转换为BGR,OpenCV使用:

im = Image.open('1.png')
但是您可以使用使用RGB的
matplotlib
来显示它


我告诉过你,你会把自己搞糊涂的,请问紫色在哪里?哦,我明白了,你把输入和输出图像连在一起了。请单独提供。这不是很正常,因为您正在更改像素顺序吗?为什么您要使用PIL打开图像,并使用OpenCV进行处理,然后使用matplotlib进行显示?你肯定会混淆自己,添加不必要的依赖项。你的帖子中只有一个图像包含两个图表。PIL使用RGB排序,OpenCV使用BGR,因此有必要重新排序。那么它也很简单,只需再进行一次转换,即
CV\u RGB2BGR
否。如果运行RGB2BGR两次,则最终将到达开始的位置,因此没有任何意义。但如果应用该opencvImage,您将获得所需的彩色图像,该图像为opencv格式?如果您交换第一个和第三个通道,然后再次交换第一个和第三个通道,你会得到你的原始图像回来,所以你可能不交换任何东西在所有。。。无论您是否有OpenCV图像、PIL图像、CMY图像或任何其他图像开始。
opencvimage = cvtColor()