2011-12-19 2 views
0

Каждый раз, когда я использую функции обработки изображений в opencv, я получаю ошибку времени выполнения C++.OpenCV Предоставляет ошибку при использовании функций imgproc (2)

Это мой код, и я получаю «приложение запросило прекратить его необычным способом»

#include <opencv2/opencv.hpp> 
#include <string> 

int main() { 
    cv::Mat a = cv::imread("img.jpg"); 
    cv::Mat b(a); 

    cv::Canny(a,b,250,300); 
    cv::namedWindow("Hello"); 
    cv::imshow("Hello",b); 
    cv::waitKey(2000); 
    return 0; 
} 
+0

Вы пытались перестроить библиотеки с помощью cmake? –

+0

Можете ли вы также опубликовать свою ОС (я предполагаю Windows, но, чтобы быть уверенным), и создать среду? – mevatron

+0

init 'b (a)' абсолютно бесполезен. Вы можете спокойно писать «Мать b»; – Sam

ответ

0

Вы проверили, что «а» после imread?

Что произойдет, если «img.jpg» находится в другом каталоге или у вас нет разрешения.

+0

@tomelse Он означает, что вы должны добавить 'if (a.empty())/* ошибка печати * /' – karlphillip

2

Функция cv::Canny требует всегда изображения в оттенках серого в качестве входного сигнала. Сначала вам нужно преобразовать a в оттенки серого. Следующий фрагмент кода делает трюк:

cv::cvtColor(a, a, CV_BGR2GRAY); 
+0

Или вы можете заставить вашу программу читать изображение в оттенках серого (если позже вам не понадобилась цветовая версия) используя 'cv :: imread (" img.jpg ", 0);' Смотрите [здесь] (http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html#imread) для деталей cv: : imread() – Chris

Смежные вопросы