gpt4 book ai didi

Python opencv cv2.cvtColor 错误(COLOR_BGR2GRAY)

转载 作者:行者123 更新时间:2023-12-02 16:58:03 32 4
gpt4 key购买 nike

我的代码中有 cv2.cvtColor 的问题:

sct_img = self.screen.grab(self.monitor)
img = Image.frombytes('RGB', sct_img.size, sct_img.rgb)
img = np.array(img)
img = self.convert_rgb_to_bgr(img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower = np.array([0, 0, 218])
upper = np.array([157, 54, 255])
mask = cv2.inRange(hsv, lower, upper)
...
错误:
cv2.error: OpenCV(4.2.0) c:\projects\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::A0x3b52564f::Set<3,-1,-1>,struct cv::impl::A0x3b52564f::Set<0,5,-1>,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
我之前已经测试过它,我导入了已经用“img = cv2.imread(image_path)”进行灰度化的图像,然后是使用 hsv 的部分......它工作得很好,但现在我在运行时截取屏幕截图并尝试了灰度使用“cv2.COLOR_BGR2GRAY”我在上面得到这个错误。当我删除该行时,我不会收到任何错误,但图像不是我想要的阈值。所以有必要在我的代码继续使用hsv之前对图像进行灰度化......
我希望有人为我提供解决方案,在此先感谢!

最佳答案

cv2.COLOR_BGR2HSV意味着它期望 BGR 图像作为输入并将返回 HSV 图像。它实际上不知道您是否完全通过了 BGR 或任何其他 3 channel 格式,但在您的情况下,您正在尝试为其提供 1 channel 灰度图像,这很关键。您应该将灰度转换回 BGR(opencv 只会使灰度 channel 增加三倍),然后执行 BGR2HSV .

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
但是等等 ,你为什么还需要?将灰度转换为 HSV 将使 H 和 S channel 充满零,而 V 将等于您已经拥有的灰度 channel 。

关于Python opencv cv2.cvtColor 错误(COLOR_BGR2GRAY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64249984/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com