首页 > 解决方案 > 保存图像时,保存的 jpg 文件的颜色不正确(cv2.COLOR_BGR2RGB 无法修复)

问题描述

我的程序应该拍照,然后将其存储在指定的文件夹中。它正在做所有这些,但是存储的 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()

我想存储显示的图像

标签: pythonpython-3.xopencv

解决方案


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

您可能会发现重命名变量很有帮助,例如frame_bgr. 当您在使用一个包或另一个包的例程之间来回切换时,一个明确的符号将帮助您记住何时应该交换第一个和第三个通道。

您发布的转换非常好。您可以选择将结果分配给img_rgb.

如果您主要进行cv2调用,那么在编写自己的函数时,您可能会选择对所有输入和输出采用 BGR 约定,以最大限度地减少转换。


推荐阅读