[英]JavaCV/OpenCV: cvLoadImage not working
我安裝了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類型:javacv.demo.main中的cvLoadImage(demo.java:17)
Java結果:1
似乎它聲稱cvLoadImage不接受字符串作為參數。
我找到的是你可以通過ImageIO加載圖像並稍后將其IplImage
給IplImage
例如:
BufferedImage img = ImageIO.read(new File("C:\\img.jpg") );
IplImage origImg = IplImage.createFrom(img);
這解決了我的問題: import static org.bytedeco.javacpp.opencv_imgcodecs.*;
您必須添加此import語句:
import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;
這是必需的,以便可以在不使用類名的情況下使用靜態方法cvLoadImage
。
你必須import com.googlecode.javacv.cpp.opencv_highgui.*;
使用javacv 0,9,您必須import static org.bytedeco.javacpp.opencv_highgui.*;
我得到了同樣的錯誤,我導入了以下包,問題解決了。
import static com.googlecode.javacv.cpp.opencv_highgui.*;
這可能是舊的,但對於那些像我一樣偶然發現這個問題的人來說,這就是我解決它的原因以及原因:
第一個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類在其類中及其靜態方法和其他函數中可用。
我希望這有幫助。
最近遇到了同樣的問題。 如果你正在使用javacv-0.10(目前更新),請手動導入這個:
import static org.bytedeco.javacpp.opencv_highgui.*;
但該項目的JRE來源應高於1.5
在我的情況下,當刮刀處於調試模式時發生問題。 嘗試以正常模式運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.