OpenCV官方栗子执行报错:
Running DetectFaceDemo
Detected 0 faces
Writing faceDetection.png
*libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data*
原因:路径问题,java代码getPath()返回的路径前面多个/,c++中不识别,解决方法如下。
System.out.println(" Running DetectFaceDemo"); // Create a face detector from the cascade file in the resources // directory. CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("/lbpcascade_frontalface.xml").getPath()); Mat image = Imgcodecs.imread(getClass().getResource("/lena.png").getPath());
修改为:
final URI xmlUri = getClass().getResource("/lbpcascade_frontalface.xml").toURI(); final CascadeClassifier faceDetector = new CascadeClassifier(new File(xmlUri).getAbsolutePath()); final URI imageUri = getClass().getResource("/4.jpg").toURI(); Mat image = Imgcodecs.imread(new File(imageUri).getAbsolutePath());