繁体   English   中英

JavaCV:无论我传递什么,cvLoadImage都返回null

[英]JavaCV: cvLoadImage returns null no matter what I pass it

我在OS X 10.7.1上。 我已经下载了最新的JavaCV二进制文件,并从当前的subversion checkout构建了OpenCV。 无论我传递什么,cvLoadImage()函数都返回null。 我已经验证我将它传递给有效的jpg图像的有效路径。 其他JavaCV函数似乎返回合理的值,但由于我无法加载图像,我无法真正检查。

我想我可能在某个地方有错误,但我不熟悉JavaCV如何报告错误,所以我无法检查。

编辑:我可以验证整个JavaCV安装是否有效和运行,因为如果我使用Java的ImageIO加载图像,它可以工作,我可以随后对加载的图像进行操作,并保存图像(再次,通过ImageIO) 。 SSCE如下:

import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_objdetect.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;

import java.io.IOException;
import javax.imageio.ImageIO;
import java.io.File;
import java.awt.image.BufferedImage;
import com.googlecode.javacv.cpp.*;
import com.googlecode.javacpp.Loader;

class ImgLoadTest {
  public static void main(String[] args) {
     //comment out EITHER the BufferedImage bit OR the cvLoadImage portion.

     //works
     BufferedImage img =  ImageIO.read(new File(args[0]));
     IplImage origImg = IplImage.createFrom(img); 

     //returns null
     //IplImage origImg = cvLoadImage(args[0]);

     System.out.println("origImg is" + origImg);

  }
}

由于我可以通过ImageIO使其工作,我不再过分担心这个错误,但解决它可能对使用JavaCV的其他人有用。

OpenCV仅适用于ASCII文件名。 如果你在路径中有i18n字符,它可能会很好地阻塞。 此外,目前,JavaCV将所有String对象映射到UTF-8,并且看起来Mac OS X默认情况下不使用UTF-8。

因此,如果i18n对您的应用程序很重要,请继续使用ImageIO ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM