Не могу прочитать изображение с opencv2.3 imread - PullRequest
1 голос
/ 10 августа 2011

Здравствуйте. Я пытаюсь прочитать изображение, используя imread функцию opencv, как в ссылке (http://opencv.itseez.com/doc/tutorials/introduction/display_image/display_image.html#display-image). У меня VS2010 с 64-битным Windows 7. Каждый раз, когда я пытаюсь получить сообщение об ошибке «нет данных изображения», однакоИзображение, которое я хочу прочитать, находится в той же папке с кодами. Может кто-нибудь помочь мне, как прочитать изображение с функцией imread? Мой код такой, как показано ниже:

#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;
}

Ответы [ 7 ]

5 голосов
/ 31 июля 2012

Если вы можете загрузить изображение используя

IplImage *img=cvLoadImage("Image_Name);

Затем вы можете конвертировать его в cv :: Mat используя

Mat mat(img);
2 голосов
/ 10 августа 2011

У меня была такая же проблема на WinXP с VS2005 и OpenCV 2.3 .Кажется, что интерфейс C ++ OpenCV не работает хорошо для Windows.У меня также были проблемы с imread(), который возвращал NULL данные.

Я решил проблему, используя вместо этого C интерфейс OpenCV.Для получения дополнительной информации, проверьте Чтение и запись изображений и видео .

0 голосов
/ 22 апреля 2014

Я встретил те же проблемы, что и у вас.Интерфейс C ++ для OpenCV2.3 не работал, и некоторые функции пришлось преобразовать в версию C.
Но, наконец, я обнаружил, в чем проблема **.
Это потому, чтосвойства проекта, когда вы скомпилировали исходный код OpenCV с помощью CMake , не совпадают со свойствами вашего текущего проекта. (Может быть, библиотеки и библиотеки вашего OpenCV загружаются из Интернета, и они могут быть скомпилированы с другим wierdсвойства.)
Итак, я проверил свой проект исходного кода OpenCV, сгенерированный CMake, обнаружил свойство проекта , C / C ++ -> Генерация кода , библиотека времени выполнения is Многопоточная отладочная DLL (/ MDd) .
Затем я изменяю соответствующее свойство в моем текущем проекте, и мой проект работает хорошо.В то же время, другой интерфейс C ++ для ошибок OpenCV решен хорошо.

0 голосов
/ 26 января 2014

Я испытываю ту же проблему, это может быть связано с компиляцией проекта VS в VS 10.

В Visual Studio 2010: перейдите в проект -> свойства -> набор символов -> используйте вместо этого многобайтовыйЮникод.

0 голосов
/ 07 мая 2013

OpenCV поддерживает форматы изображений Windows: растровое изображение (bmp), переносимые форматы изображений (pbm, pgm, ppm) и растр Sun (sr, ras).

0 голосов
/ 28 сентября 2012

Установка поддержки общеязыковой среды выполнения (/ clr) в Visual C ++.Это работает.

0 голосов
/ 10 августа 2011

Выньте тест argc != 2.Вы не используете аргументы, переданные вашей программе, поэтому это излишне.И если argc на самом деле не eaual to 2, ваша программа завершает работу, прежде чем даже приступить к тесту !image.data.

Редактировать: Я только что посмотрел пример кодаВы связаны с.Он загружает изображение, имя которого передается программе в командной строке.Вот почему тест argc != 2 есть.Вы определенно хотите убрать это, потому что вы, скорее всего, не передаете имя файла в командной строке, поэтому ваш argc равен 1, поэтому тест всегда будет неудачным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...