#c #opencv
#c #opencv
Вопрос:
Я пытаюсь использовать C и OpenCV для объединения изображений, но возникает ошибка.
Мой код:
Ошибка:
Ошибка утверждения (size.width> 0 amp;amp; size.height> 0) в imshow
Комментарии:
1. Вставьте соответствующий код и ошибку в виде текста. Не скриншот.
2. Кроме того, вы уверены, что изображение логотипа есть? Вы запросили изображение с именем
dota_log.png
. Должно ли это бытьdota_logo.png
?3. эта ошибка обычно возникает, когда указанное вами входное изображение недоступно. Убедитесь, что мат, который вы передаете в imshow, не равен null
4. добавьте
if(logo.empty()) doSomethingLikePrintingErrorButDon'tTryToUseTheImage
. Проверьте путь к файлу вашего логотипа, убедитесь, что файл не поврежден и т. Д.
Ответ №1:
Что 199
imread(..., 199)
должно означать in?
- IMREAD_UNCHANGED Если задано, верните загруженное изображение как есть (с альфа-каналом, в противном случае оно обрезается).
- IMREAD_GRAYSCALE Если задано, всегда преобразуйте изображение в одноканальное изображение в оттенках серого.
- IMREAD_COLOR Если задано, всегда преобразуйте изображение в 3-канальное цветное изображение BGR.
- IMREAD_ANYDEPTH Если задано, возвращает 16-битное / 32-битное изображение, когда входные данные имеют соответствующую глубину, в противном случае преобразуйте его в 8-битное.
- IMREAD_ANYCOLOR Если задано, изображение считывается в любом возможном цветовом формате.
- IMREAD_LOAD_GDAL Если задано, используйте драйвер gdal для загрузки изображения.
- несколько других вариантов для уменьшенных изображений в оттенках серого.
Обычно вы хотите загрузить изображение в формате BGR:
Mat img = imread("/path/to/img.png"); // IMREAD_COLOR is default value
или в оттенках серого
Mat img = imread("/path/to/img.png", IMREAD_GRAYSCALE);