Python OpenCV特定颜色提取

Python OpenCV特定颜色提取,python,opencv,image-processing,Python,Opencv,Image Processing,我正在尝试从图像中删除所有蓝色通道项目,这是我的小脚本: import cv2 import argparse parser = argparse.ArgumentParser(description='Process image signatures.') parser.add_argument('inputfile', metavar='InFile', type=str, nargs=1, help='input image file with s

我正在尝试从图像中删除所有蓝色通道项目,这是我的小脚本:

import cv2
import argparse

parser = argparse.ArgumentParser(description='Process image signatures.')

parser.add_argument('inputfile', metavar='InFile', type=str, nargs=1,
                   help='input image file with signatures')
parser.add_argument('outputfile', metavar='OutFile', type=str, nargs=1,
                   help='output image file with signatures')

args = parser.parse_args()

img = cv2.imread(args.inputfile[0], 0)

# Convert color to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# set range for blue color
lower_range = np.array([110,50,50])
upper_range = np.array([130,255,255])

# apply mask
mask = cv2.inRange(hsv, lower_range, upper_range)

# apply color
res = cv2.bitwise_and(img,img, mask= mask)

cv2.imshow('res', res)
cv2.imwrite(args.outputfile[0], res)
现在我在输入图像中获得了无效的通道数,但是这个jpg图像至少有3个颜色通道。 全部错误如下:

$ python c:/Users/LenovoPC/Desktop/signature_extractor-master/signature_extractor-master/blue_img_extractor.py ./inputs/in1.jpg ./outputs/output1.png
Traceback (most recent call last):
  File "c:/Users/LenovoPC/Desktop/signature_extractor-master/signature_extractor-master/blue_img_extractor.py", line 16, in <module>
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
cv2.error: OpenCV(4.4.0) c:\users\appveyor\appdata\local\temp\1\pip-req-build-cff9bdsm\opencv\modules\imgproc\src\color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__thiscall cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<3,4,-1>,struct cv::impl::A0x5406ba9d::Set<3,-1,-1>,struct cv::impl::A0x5406ba9d::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
$python c:/Users/LenovoPC/Desktop/signature\u extractor-master/signature\u extractor-master/blue\u img\u extractor.py./in1.jpg./output1.png
回溯(最近一次呼叫最后一次):
文件“c:/Users/LenovoPC/Desktop/signature\u extractor-master/signature\u extractor-master/blue\u img\u extractor.py”,第16行,在
hsv=cv2.CVT颜色(img,cv2.COLOR\U BGR2HSV)
cv2.error:OpenCV(4.4.0)c:\users\appveyor\appdata\local\temp\1\pip-req-build-cff9bdsm\OpenCV\modules\imgproc\src\color.simd\u helpers.hpp:92:函数“\uu thiscall cv::impl:`匿名命名空间'::cvt输入图像中的通道数无效:
>'VScn::contains(scn)'
>在哪里
>“scn”是1

这里到底有什么问题?谢谢。

这是因为这一行之前有一行错误:

img=cv2.imread(args.inputfile[0],0)

传递
0
参数,即
cv::IMREAD\u GRAYSCALE

移除零,或使用1强制颜色:

img=cv2.imread(args.inputfile[0])

请阅读文档中的更多内容: