java - 我在与输入颜色通道相关的 inRange 函数上遇到错误
问题描述
我一直在尝试将 inRange 函数应用于我的图像。在没有 InRange 的情况下,转换为 HSV 可以正常工作,但是当我尝试应用它以便获得我想要的颜色(在这种情况下为紫色)时。我得到了错误。
我正在使用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 ...\opencv\sources\modules\imgproc\src\color.hpp, line 259
E/org.opencv.imgproc: imgproc::cvtColor_11() caught cv::Exception: OpenCV(4.0.1) ...\opencv\sources\modules\imgproc\src\color.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 函数时确实起作用
推荐阅读
- azure - 如何在 azure devops 中为带有引用的 dot net 项目的 xamarin 项目创建 YAML 构建管道
- java - 在设计异步 Java API 时,如何确保整个 CompletableFuture 链由内部线程池执行?
- jquery - 由于 MIME 类型错误(Spring Boot 2、Thymeleaf、Bootstrap)而无法加载 javascript 文件
- ios - 如何本地化“Touch ID for”文本
- java - 在其他线程中使用蓝牙连接的 OutputStream 会干扰消息的接收
- html - Bootstrap 按钮上的自动换行不起作用
- android - 房间和调试在 WorkManager 中不起作用?
- haskell - 解析错误(可能是不正确的缩进或不匹配的括号)
- php - 如何将mysql数据类型分配给php var
- date - 在coldfusion中将分钟转换为小时和分钟