因此,我尝试使用cv2将值为(232,190,172)的单个RGB颜色转换为YCbCr颜色空间。cvtColor()但是我得到一个错误:
error Traceback (most recent call last)
Cell In[10], line 25
22 typicalSkinColorRGB = np.array([232, 190, 172])
24 # convert to YCbCr color space
---> 25 typicalSkinColorYCbCr = cv2.cvtColor(typicalSkinColorRGB, cv2.COLOR_RGB2YCR_CB)
26 print(typicalSkinColorYCbCr)
error: OpenCV(4.7.0) d:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<3,4,-1>,struct cv::impl::A0x820c46fd::Set<3,-1,-1>,struct cv::impl::A0x820c46fd::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)'
> Invalid number of channels in input image:
> 'VScn::contains(scn)'
> where
> 'scn' is 1
这是一个简单的代码,我正在尝试运行:
import numpy as np
import cv2
# from researching on the internet, the RGB color (232, 190, 172) is a typical natural skin
typicalSkinColorRGB = np.array([232, 190, 172])
# convert to YCbCr color space
typicalSkinColorYCbCr = cv2.cvtColor(typicalSkinColorRGB, cv2.COLOR_RGB2YCR_CB)
print(typicalSkinColorYCbCr)
1条答案
按热度按时间e0bqpujr1#
我认为问题与输入数组的形状有关。CV 2需要3个颜色通道,但您的阵列只有一个通道。通常,图像将具有形状
[width, height, n_channels]
。如果你把它改为np.array([[[232, 190, 172]]])
,它应该可以工作-因为现在它将是一个单像素图像,可以这么说。