我在 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);
}
}
Run Code Online (Sandbox Code Playgroud)
因为我可以通过 ImageIO 使它工作,所以我不再过度担心这个错误,但解决它可能对其他使用 JavaCV 的人有用。
OpenCV 仅适用于 ASCII 文件名。如果路径中有 i18n 字符,它很可能会阻塞。此外,目前,JavaCV 将所有 String 对象映射到 UTF-8,并且 Mac OS X 默认情况下似乎并不使用 UTF-8。
因此,如果 i18n 对您的应用程序很重要,请继续使用 ImageIO...
| 归档时间: |
|
| 查看次数: |
2845 次 |
| 最近记录: |