OpenCV 4.1.2 Java项目中Imgproc.inRange方法找不到符号求助
OpenCV 4.1.2 Java中Imgproc.inRange方法找不到符号的解决办法
核心问题
你调用的inRange方法并不属于Imgproc类,而是属于org.opencv.core.Core类,这是导致"找不到符号"错误的直接原因。
解决步骤
修正方法调用
将代码中的:Imgproc.inRange(BLUR,LOWER,UPPER,DST);替换为:
Core.inRange(BLUR,LOWER,UPPER,DST);你已经导入了
Core类,所以无需额外添加导入语句。额外排查点(可选)
- 确认OpenCV Java库与本地native库版本完全一致:确保项目依赖的
opencv-412.jar和加载的本地库(如Windows下的opencv_java412.dll)都是4.1.2版本,版本不匹配可能导致方法缺失。 - 清理IDE缓存并重新构建项目:在IntelliJ中执行
Build -> Clean Project,再选择Rebuild Project,避免缓存导致的方法识别异常。 - 验证输入Mat的有效性:确保
BLUR是有效的3通道HSV图像(你的代码中通过cvtColor转换为HSV,这一步是正确的,但如果图像加载失败会导致后续问题,可以添加if (image.empty())判断图像是否成功加载)。
- 确认OpenCV Java库与本地native库版本完全一致:确保项目依赖的
修正后的完整代码
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Scalar; import org.opencv.core.Size; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class Main { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat image = Imgcodecs.imread("C:\\Users\\hp probook x360 435\\Videos\\pfa\\111.jfif"); // 新增图像加载判断 if (image.empty()) { System.out.println("无法加载图像,请检查路径是否正确"); return; } Mat BLUR = new Mat(); Mat DST=new Mat(); Imgproc.GaussianBlur(image, BLUR, new Size(5,5), 0); Scalar LOWER=new Scalar(18,90,180); Scalar UPPER=new Scalar(35,255,255); Imgproc.cvtColor(image, BLUR, Imgproc.COLOR_BGR2HSV); // 修正为Core.inRange Core.inRange(BLUR,LOWER,UPPER,DST); HighGui.imshow("Original Image", image); HighGui.imshow("HSV Image", BLUR); HighGui.imshow("InRange Result", DST); HighGui.waitKey(0); // 释放资源 image.release(); BLUR.release(); DST.release(); HighGui.destroyAllWindows(); } }
内容的提问来源于stack exchange,提问作者SAF12
相关产品推荐
相关产品推荐

