在我正在進行項目時,我注意到我無法加載圖像。這裏是我用來檢查的簡單代碼:OpenCV無法加載圖像
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if(argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
if(! image.data) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
Mat gray_image;
cv::cvtColor(image, gray_image, CV_RGB2GRAY);
imwrite("Gray_Image.jpg",gray_image);
return 0;
}
下面是它的輸出,當我執行它:
[email protected]:~# ./tryit lena.jpg
Could not open or find the image
我試圖直接使用圖像的地址(「/家/根/lena.jpg「)而不是argv [1],但沒有任何改變。
可能是什麼問題?
ps:我正在交叉編譯這個OpenCV程序,然後在安裝了Angstrom Linux的BeagleBone上運行它。這個問題可以與它相關嗎?
您的Angstrom Linux安裝有可能不支持JPEG文件的OpenCV設置。你可以使用'fopen'之類的東西來確保你可以訪問文件,並且可以在BeagleBone上查找JPEG庫嗎? – 2012-07-26 10:17:07
@RajeshJAdvani我打開它與fopen並檢查它是否爲NULL,它不是。所以我沒有任何問題訪問文件。順便說一下,我的Angstrom Linux上沒有OpenCV設置。我使用OpenCV庫交叉編譯PC上的程序,這些庫也是爲ARM Cortex A8交叉編譯的,然後在我的beaglebone上執行。 – 2012-07-26 12:29:51
@RajeshJAdvani我開始認爲這個問題與我的OpenCV庫有關。也許我無法成功交叉編譯它們。如果是這樣的話,我可以通過下面的方法搞清楚:我可以發送一個字節數組而不是圖像,然後讓OpenCV處理它。你有一個想法如何將圖片轉換爲字節數組? – 2012-07-26 12:57:14