JavaCV / OpenCV:cvLoadImage无法正常工作

时间:2013-04-07 20:54:31

标签: java javacv

我安装了JavaCV / OpenCV库,我遇到了基本示例代码的问题。

根据我看过的几个例子,这段代码应该加载一个图像:

IplImage image = cvLoadImage("C:\\img.jpg");

但是,当我运行时,我得到一个“找不到符号”的错误。

由于这是我第一次使用它,我不确定我是否搞砸了安装。

根据最新的JavaCV自述文件,我确实拥有正确版本的OpenCV。我还导入了所有JavaCV jar文件。据我所知,我也正确设置了所有路径。

任何人都知道问题是什么?

编辑:

完整代码:

import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import java.io.File;


public class demo {

    public static void main(String[] args) 
    {
        IplImage image = cvLoadImage("C:\\img.jpg");

        final CanvasFrame canvas = new CanvasFrame("Demo");
        canvas.showImage(image);
        canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    }

}

尝试运行时出错:

线程“main”中的异常java.lang.RuntimeException:无法编译的源代码 - 错误的sym类型:cvLoadImage     在javacv.demo.main(demo.java:17)

Java结果:1

似乎它声称cvLoadImage不接受字符串作为参数。

8 个答案:

答案 0 :(得分:5)

我找到的一个步行是通过ImageIO加载图像并稍后将其传递给IplImage

e.g:

 BufferedImage img =  ImageIO.read(new File("C:\\img.jpg") );
 IplImage origImg = IplImage.createFrom(img);

答案 1 :(得分:4)

这解决了我的问题:import static org.bytedeco.javacpp.opencv_imgcodecs.*;

答案 2 :(得分:2)

您必须import com.googlecode.javacv.cpp.opencv_highgui.*;

答案 3 :(得分:2)

使用javacv 0,9,您必须import static org.bytedeco.javacpp.opencv_highgui.*;

答案 4 :(得分:1)

我得到了同样的错误,我导入了以下包,问题解决了。

import static com.googlecode.javacv.cpp.opencv_highgui.*;

答案 5 :(得分:1)

这可能是旧的,但对于那些像我一样偶然发现这个问题的人来说, 这是我如何解决它以及为什么:

第一个OP的错误:线程“main”中的异常java.lang.RuntimeException:无法编译的源代码 - 错误的sym类型:javacv.demo.main中的cvLoadImage(demo.java:17)

这表示编译器找不到您要调用的cvLoadImage方法。

cvLoadImage是JavaCPP下的静态方法。 具体来说,它是opencv_imgcodecs类下的静态方法。

要解决此问题,必须首先指定opencv_imgcodecs类的导入。

这可以通过添加导入来完成:
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;

这反过来会导致opencv_imgcodecs类在其类中及其静态方法和其他函数中可用。

我希望这会有所帮助。

答案 6 :(得分:0)

最近遇到了同样的问题。 如果你正在使用javacv-0.10(目前更新),请手动导入这个:

import static org.bytedeco.javacpp.opencv_highgui.*;

但项目的JRE来源应高于1.5

答案 7 :(得分:0)

就我而言,问题是当吸水扒处于调试模式时发生的。 尝试以普通模式运行。