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