[英]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.