我在与输入颜色通道相关的 inRange 函数上收到错误



我一直在尝试将inRange函数应用于我的图像。转换为HSV在没有InRange的情况下工作得很好,但当我尝试应用它时,我可以获得我想要的颜色(在这种情况下是紫色(。我弄错了。

我正在使用OpenCV 4.0.3

Mat plate_img = imread(imagePath, IMREAD_COLOR);
Mat plate_gradient = new Mat();
GaussianBlur(plate_img, plate_img,new Size(7,7),0);
Mat boosted_plate_gradient =  new Mat(plate_img.rows(), plate_img.cols(), CvType.CV_8U, new Scalar(3));
morphologyEx(plate_img, plate_gradient, MORPH_GRADIENT, new Mat());
plate_gradient.convertTo(plate_gradient, -1, 9.5, -70);
cvtColor(plate_gradient,plate_gradient, COLOR_BGR2HSV);
Scalar low = new Scalar(151,48.6,85.5);
Scalar high = new Scalar(150,100,50.2);
Core.inRange(plate_gradient, low, high, boosted_plate_gradient);
E/cv::error(): OpenCV(4.0.1) Error: Unspecified error (> Invalid number of channels in input image:
>     'VScn::contains(scn)'
> where
>     'scn' is 1
) in cv::CvtHelper<VScn, VDcn, VDepth, sizePolicy>::CvtHelper(cv::InputArray, cv::OutputArray, int) [with VScn = cv::Set<3, 4>; VDcn = cv::Set<1>; VDepth = cv::Set<0, 2, 5>; cv::SizePolicy sizePolicy = (cv::SizePolicy)2u; cv::InputArray = const cv::_InputArray&; cv::OutputArray = const cv::_OutputArray&], file ...opencvsourcesmodulesimgprocsrccolor.hpp, line 259

E/org.opencv.imgproc: imgproc::cvtColor_11() caught cv::Exception: OpenCV(4.0.1) ...opencvsourcesmodulesimgprocsrccolor.hpp:259: error: (-2:Unspecified error) in function 'cv::CvtHelper<VScn, VDcn, VDepth, sizePolicy>::CvtHelper(cv::InputArray, cv::OutputArray, int) [with VScn = cv::Set<3, 4>; VDcn = cv::Set<1>; VDepth = cv::Set<0, 2, 5>; cv::SizePolicy sizePolicy = (cv::SizePolicy)2u; cv::InputArray = const cv::_InputArray&; cv::OutputArray = const cv::_OutputArray&]'
> Invalid number of channels in input image:
>     'VScn::contains(scn)'
> where
>     'scn' is 1

显然,我的另一个cvtcolor(在BGR2HSV之后(是在我试图将其从BGR2GRAY转换时抛出错误的,尽管它在我没有实现inRange函数时确实起作用

最新更新