簡體   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