Перейти к содержимому
Compvision.ru
ProgRoman

opencv и Microsoft Visual Studio

Recommended Posts

Подскажите, что за ошибка и как исправить, начал работать в 10 студии и простейший код просто загрузки изображения выдаёт исключения..


#include <cv.h>

#include <cxcore.h>

#include <highgui.h>


using namespace std;

using namespace cv;


int _tmain(int argc, _TCHAR* argv[])

{		

	Mat im = imread("photo.jpg",CV_LOAD_IMAGE_COLOR);	

	return 0;

}

в 2008 студии работает..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Mat im = imread("photo.jpg",CV_LOAD_IMAGE_COLOR); 

экзотика какая то. на матлаб вообще похоже.

наверно надо Mat создать сначала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Mat im = imread("photo.jpg",CV_LOAD_IMAGE_COLOR); 
экзотика какая то. на матлаб вообще похоже. наверно надо Mat создать сначала.
Да нет, все норма, извратившись, можно и так сделать:

cv::Mat matrix = cv::imread("gia.jpg", CV_LOAD_IMAGE_COLOR);

IplImage *image = cvCreateImage(cvSize(matrix.cols, matrix.rows), 8, 3);

image->imageData = (char*)matrix.data;

cvShowImage("GIA", image);

cvWaitKey();

p.s. путем дедукции и телепатии, можно предположить, что ошибка в том, что photo.jpg находится не там, где надо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ошибка следующая

Необработанное исключение в "0x004737ff (msvcr100d.dll)" в "testApp.exe": 0xC0000005: Нарушение прав доступа при чтении "0x6a2e3630".

77 строка fopen.c

там


if(*file==_T('\0'))

        {

            errno=EINVAL;

            return NULL;

        }


/* open the stream */

вот то, что изображение не там я это тоже так думал..., но изображение у меня в исполняемой папке поэтому просто пишу имя рисунка и его расширение, ну как обычно подобный синтаксис для С всё ок

IplImage *img1 = cvLoadImage("photo.jpg",CV_LOAD_IMAGE_COLOR);

cvNamedWindow("Image:");

cvShowImage("Image:",img1);

cvWaitKey(0);

cvReleaseImage(&img1);

cvDestroyWindow("Image:");

это Сишный синтаксис он всё нормально работает и в 8 и в 10 студии, но сами разработчики Opencv говорят, что начиная с версии 2.2 они более поддерживают С++ ну и рекомендуют использовать его а не сишный функции вот собственно, что меня и с подвигло на разбирание в немного отличающемся синтаксисе

Mat im = imread("photo.jpg",CV_LOAD_IMAGE_COLOR);

imshow("img:",im);

waitKey(0);

это уже С++-ный синтаксис, выигрыш в размере кода конечно очевиден, но у меня он только в 8 студии работает в 10 вообще ни в какаю, пробовал разные перегруженные конструкторы к примеру

IplImage *img1 = cvLoadImage("photo.jpg",CV_LOAD_IMAGE_COLOR);

Mat im(img1)

но и это тоже оказалось не лучше всегда исключение 77 строка fopen.c

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Народ в таких случаях переключается на Release. В Debug говорят С++ плохо работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ошибка следующая

Необработанное исключение в "0x004737ff (msvcr100d.dll)" в "testApp.exe": 0xC0000005: Нарушение прав доступа при чтении "0x6a2e3630".

77 строка fopen.c

там


if(*file==_T('\0'))

        {

            errno=EINVAL;

            return NULL;

        }


/* open the stream */

вот то, что изображение не там я это тоже так думал..., но изображение у меня в исполняемой папке поэтому просто пишу имя рисунка и его расширение, ну как обычно подобный синтаксис для С всё ок

IplImage *img1 = cvLoadImage("photo.jpg",CV_LOAD_IMAGE_COLOR);

cvNamedWindow("Image:");

cvShowImage("Image:",img1);

cvWaitKey(0);

cvReleaseImage(&img1);

cvDestroyWindow("Image:");

это Сишный синтаксис он всё нормально работает и в 8 и в 10 студии, но сами разработчики Opencv говорят, что начиная с версии 2.2 они более поддерживают С++ ну и рекомендуют использовать его а не сишный функции вот собственно, что меня и с подвигло на разбирание в немного отличающемся синтаксисе

Mat im = imread("photo.jpg",CV_LOAD_IMAGE_COLOR);

imshow("img:",im);

waitKey(0);

это уже С++-ный синтаксис, выигрыш в размере кода конечно очевиден, но у меня он только в 8 студии работает в 10 вообще ни в какаю, пробовал разные перегруженные конструкторы к примеру

IplImage *img1 = cvLoadImage("photo.jpg",CV_LOAD_IMAGE_COLOR);

Mat im(img1)

но и это тоже оказалось не лучше всегда исключение 77 строка fopen.c
Ось: Windows 7 x64 Ultimate IDE: Visual Studio 2010 SP1 OpenCV: v2.2 Stable/Installer Сборка: Debug
cv::Mat im = cv::imread("D:\\gia.jpg",CV_LOAD_IMAGE_COLOR);

cv::imshow("img:", im);

cv::waitKey(0);

Работает без проблем

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Странно попробую OpenCV переустановить а то у меня такой код не работает ни в Windows 7 x64 Ultimate ни в XP вообщем я подумал может что-то при скачивании хотя странно... пока не ясно почему так...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×