Объединение изображений с C и OpenCV

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