OpenCV特定颜色提取

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


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)

现在我发现Invalid number of channels in input image这张 jpg 图像至少有 3 个颜色通道。

https://img4.mukewang.com/64f6d8d400017ee406520690.jpg

完整错误如下:


$ 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

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


翻过高山走不出你
浏览 173回答 1
1回答

叮当猫咪

这是因为此行在出现错误的行之前:img = cv2.imread(args.inputfile[0], 0)参数0已通过,即cv::IMREAD_GRAYSCALE。删除零,或使用 1 强制颜色:img = cv2.imread(args.inputfile[0])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python