Ошибка в отображении картинки в OpenCV

109
18 августа 2019, 01:40

Код:

#include "opencv2/opencv.hpp"
#include <iostream>

using namespace cv;
using namespace std;
int main() {
    Mat test = imread("test_img.jpg", IMREAD_UNCHANGED);
    if (!test.data) {
        cout << "Image not found!" << endl;
        return -1;
    }
    imshow("test", test);
    waitKey(0);
}

Пытаюсь сделать просто вывод картинки. Изначально, была проблема в том что в консоль выводилась следующая ошибка (как я понимаю, она обозначает, что картинка пустая)

Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file c:\build\master_winpack-build-win64-vc15\opencv\modules\highgui\src\window.cpp, line 352

Я добавил условие чтобы программа не вылетала с ошибкой и удостоверился,что проблема в том, что OpenCV видит картинку как пустую. Условие:

if (!test.data) {
    cout << "Image not found!" << endl;
    return -1;
}

И с какой бы фотографией я не пробовал, ничего не меняется и картинка не отображается и либо вызывается ошибка, указанная выше, либо отображается моё сообщение "Image not found!" и программа закрывается.

P.S. Так же удостоверился, что картинка, которую пытаюсь отобразить действительно имеет формат .jpg и находиться в корне программы.

Answer 1

Попробуете получить Mat из raw данных. Для этого считайте файл средствами C++, как это сделать обсуждается тут. Далее используйте стандартный конструктор Mat для массива байт

Mat mat(width, height, CV_8UC3, указатель-на-массив-байт);

P.S. Убедитесь, что канальность вашего изображения равна трем (png без прозрачностей или jpg) или поменяйте CV_8UC3 на CV_8UC4

Answer 2

Была идентичная проблема,оказалось, что в свойствах проекта следует разделить библиотеки для конфигураций отладки и релиза.

Во вкладке компоновщик->ввод в дополнительных зависимостях путь до opencv...d.lib указывается только для debug конфигурации,а opencv....lib для release. Я указывал оба файла для всех конфигураций и в моём случае это было причиной ошибки.

READ ALSO
Как пользоваться Drools standalone?

Как пользоваться Drools standalone?

Кто пользовался процессором правил Drools? Из того, что я прочитал - это набор ява-библиотек, которые интегрируются в проектПосле чего можно...

124
Где найти библиотеку FileUtils

Где найти библиотеку FileUtils

Пишу автоматизационный тест, суть такова: открыть приложение, нажать на список городов, сделать скриншот

133
База данных в CRM приложении

База данных в CRM приложении

Я начинающий разработчикУ меня вот такой вопрос

140
Чтение Java DataOutputStream в C++

Чтение Java DataOutputStream в C++

Всех приветствую

132