Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保存图像时,保存的jpg文件上的颜色不正确(cv2.color_BGR2RGB无法修复此问题)_Python_Python 3.x_Opencv - Fatal编程技术网

Python 保存图像时,保存的jpg文件上的颜色不正确(cv2.color_BGR2RGB无法修复此问题)

Python 保存图像时,保存的jpg文件上的颜色不正确(cv2.color_BGR2RGB无法修复此问题),python,python-3.x,opencv,Python,Python 3.x,Opencv,我的程序应该拍摄一张照片,然后将其存储在指定的文件夹中。它正在做所有这些,但是存储的jpg文件上的颜色与它显示的图像相差很远。我想纠正这一点 我试过cv2.COLOR_BGR2HSV,但我认为RGB是最好的选择。请帮忙 import cv2 import matplotlib.pyplot as plt import sys def main(): cap = cv2.VideoCapture(0) if cap.isOpened(): ret, frame=

我的程序应该拍摄一张照片,然后将其存储在指定的文件夹中。它正在做所有这些,但是存储的jpg文件上的颜色与它显示的图像相差很远。我想纠正这一点

我试过cv2.COLOR_BGR2HSV,但我认为RGB是最好的选择。请帮忙

import cv2
import matplotlib.pyplot as  plt
import sys
def main():
    cap = cv2.VideoCapture(0)

    if cap.isOpened():
        ret, frame=cap.read()
        print(ret)
        print(frame)
    else:
        ret = False

    #I AM TRYING TO CONVERT THE COLOR USING THIS LINE OF CODE
    img1 = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)

    plt.imshow(img1)
    plt.title("Car Image")
    plt.xticks([])
    plt.yticks([])
    plt.show()

    cv2.imwrite("C:/Users/Fahim/PycharmProjects/CarPark/Car_Image.jpg", img1);





    cap.release()



if __name__ == "__main__":
    main()

我想存储显示的图像

OpenCV和Matplotlib约定不同, 因为它们分别使用BGR和RGB

您可能会发现重命名变量很有帮助,例如将变量重命名为
frame\u bgr
。 显式符号将帮助您记住第一和第三个通道 应该交换 在使用一个包或另一个包中的例程时来回切换

你发布的转换非常好。 您可以选择分配结果,例如分配给
img\u rgb

如果你主要打
cv2
电话, 然后,在编写自己的函数时,您可以选择采用 所有输入和输出的BGR约定,
尽量减少转换。

传递到cv2的过程可能重复。im将图像写入bgr,而不是RGB,这样才有效!谢谢我仍然不明白为什么BGR提供正确的颜色,但RGB没有。不过非常感谢。我刚换了这一行,效果很好。imwrite(“C:/Users/Fahim/PycharmProjects/CarPark/Car_Image.jpg”,frame);