簡體   English   中英

無法使用 opencv2.3 imread 讀取圖像

[英]Can not read image with opencv2.3 imread

您好,我正在嘗試使用鏈接(http://opencv.itseez.com/doc/tutorials/introduction/display_image/display_image.html#display-image)中的 opencv 的 imread function 來讀取圖像。 我有 64 位 windows 7 的 VS2010。每次嘗試時我都會收到錯誤消息“無圖像數據”,但是我要讀取的圖像與代碼位於同一文件夾中。 有人可以幫我如何使用 imread function 讀取圖像嗎? 我的代碼如下:

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
    Mat image;  
    image = imread("al.jpg");
    if(argc != 2 || !image.data )
    {
        printf("no image data \n");
        return -1;
    }
    namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

您可以使用它加載圖像

IplImage *img=cvLoadImage("Image_Name);

然后你可以將它轉換成 cv::Mat 使用,

Mat mat(img);

我在使用 VS2005 和OpenCV 2.3的 WinXP 上遇到了同樣的問題。 OpenCV 的 C++ 接口似乎不適用於 Windows。 我也遇到了imread()的問題,它返回NULL數據。

我使用 OpenCV 的C 接口解決了這個問題。 有關更多信息,請查看閱讀和寫作圖像和視頻

OpenCV 支持圖像格式 Windows bitmap (bmp), 便攜式圖像格式 (pbm, pgm, ppm) 和 Sun raster (sr.,

我遇到了同樣的問題,這可能來自 VS 10 中的 VS 項目編譯。

在 Visual Studio 2010 中:Go 到項目 --> 屬性 --> 字符集 --> 使用多字節而不是 unicode。

我遇到了和你一樣的問題。 OpenCV2.3 的C++ 接口不起作用,某些功能必須轉換為 C 版本。
但最后,我發現了**問題是什么。
That is because the project properties when you compiled your OpenCV source code with CMake , is not the same as your current project properties.(May be your OpenCV's dll and libs are download from the internet, and these may be compiled with other wierd properties. )
所以我檢查了我的 CMake 生成的 OpenCV 源代碼項目,我找到了項目屬性C/C++-->Code Generation運行時庫Multi-threaded Debug DLL(/MDd)
然后,我在我當前的項目中更改了相應的屬性,我的項目運行良好。 同時,針對OpenCV的其他C++接口的bug也得到了很好的解決。

取出argc != 2測試。 您沒有使用傳遞給您的程序的 arguments,所以它是多余的。 如果argc實際上不等於 2,那么您的程序甚至在進入.image.data測試之前就終止了。

編輯:我剛剛查看了您鏈接到的代碼示例。 它加載一個圖像,其名稱通過命令行傳遞給程序。 這就是存在argc != 2測試的原因。 你肯定想把它拿出來,因為你很可能沒有在命令行上傳遞文件名,所以你的argc是 1,因此測試總是會失敗。

在 Visual C++ 中設置公共語言運行時支持 (/clr)。 有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM