我安装了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不接受字符串作为参数。
答案 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)
就我而言,问题是当吸水扒处于调试模式时发生的。 尝试以普通模式运行。