Чтение и отображение изображения в OpenCV с использованием C ++

Опубликовано: 29 Декабря, 2021

В этой статье мы обсудим, как открыть изображение с помощью OpenCV (компьютерное зрение с открытым исходным кодом) на C ++. В отличие от python, никаких дополнительных библиотек в C ++ не требуется. OpenCV C ++ поставляется с этим удивительным контейнером изображений Mat, который обрабатывает все за нас. Единственное изменение, наблюдаемое в стандартной программе на C ++, - это включение пространства имен cv, которое содержит все функции, классы и структуры данных OpenCV. Для чтения и отображения изображения в OPenCV требуются следующие функции:

imread () : эта функция используется для чтения изображений и принимает следующие 2 аргумента:

  • filename: Полный адрес загружаемого изображения имеет строковый тип. Например: «C: users downloads sample.jpg».
  • flag: это необязательный аргумент, он определяет режим чтения изображения и может принимать несколько значений, например
    • IMREAD_COLOR: режим по умолчанию, в котором изображение загружается, если не указаны аргументы. Загружает изображение в формате BGR.
    • IMREAD_UNCHANGED: загружает изображение в исходной форме. Он также включает альфа-канал, если он присутствует внутри изображения.
    • IMREAD_GRAYSCALE: загружает изображение как изображение в градациях серого.

Вывод: возвращает изображение как объект Mat

Использование:

// Reading the image file
 Mat image = imread(“C:/users/downloads/default.jpg”, IMREAD_grayscale); 

imshow () : эта функция используется для отображения изображений и принимает следующие два аргумента:

  • winname или имя окна: это заголовок окна, отображающего изображение, и имеет строковый тип.
  • image: Это изображение, которое будет отображаться. Его тип - Mat , контейнер изображений C ++.

Вывод: Создайте окно, отображающее изображение.

Использование:

// Show our image inside the created window
imshow(“Window Name”, image);

Mat :: empty (): это помогает нам в обработке ошибок в случае, если функция imread () не может загрузить изображение или изображение не существует по указанному пути, и сообщает нам, пуст контейнер Mat или нет.

WaitKey (): эта функция помогает отображать изображения в течение более длительного времени, удерживая окно открытым до тех пор, пока пользователь не нажмет клавишу.

Ниже представлена программа для того же:

C ++

// C++ program for the above approach
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
// Driver code
int main( int argc, char ** argv)
{
// Read the image file as
// imread("default.jpg");
Mat image = imread( "Enter the Address"
"of Input Image" ,
IMREAD_GRAYSCALE);
// Error Handling
if (image.empty()) {
cout << "Image File "
<< "Not Found" << endl;
// wait for any key press
cin.get();
return -1;
}
// Show Image inside a window with
// the name provided
imshow( "Window Name" , image);
// Wait for any keystroke
waitKey(0);
return 0;
}

Входное изображение:

Выходное изображение:

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++