在for循环中将rgb图像转换为ycbcr会产生TypeError

时间:2018-03-23 07:32:02

标签: numpy for-loop opencv-python

我想访问目录中的图像,并使用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

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

或者,有人可以分享另一种方法来实现我的目标吗?

1 个答案:

答案 0 :(得分:1)

为了进行颜色转换,您需要为cvtColor方法提供numpy数组或标量。因此,在您的情况下,首先需要使用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)