在使用 for 循环时将 rgb 图像转换为 ycbcr 会出现 TypeError

convert rgb images to ycbcr in using for loop gives an TypeError

我想访问目录中的图像并使用 for 循环将它们从 RGB 转换为 YCbCr。我不擅长编程和尽我所能。 我有以下代码:

import numpy as np
import cv2, os
from glob import glob

path= 'the_path_to_the_images'

for filename in os.listdir(path):
    ycbcr = cv2.cvtColor(filename, cv2.COLOR_BGR2YCrCb)
    cv2.imwrite( filename, ycbcr)

这会引发错误:

TypeError: src is not a numpy array, neither a scalar

我已经搜索了一些方法来解决它,但我不能。 我应该如何解决这个问题?

或者,有人可以在这里分享实现我的目标的替代方法吗?

为了进行颜色转换,您需要提供一个 numpy 数组或标量到 cvtColor 方法。因此,在您的情况下,您首先需要使用 cv2.imread(filename) 读取路径中的图像,然后进行转换。

一个完整的解决方案是

path= 'the_path_to_the_images'

for filename in os.listdir(path):
    image = cv2.imread(filename)
    ycbcr = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb)
    cv2.imwrite( filename, ycbcr)