Чтение и отображение изображения в OpenCV с использованием C ++
В этой статье мы обсудим, как открыть изображение с помощью 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; } |
Входное изображение:
Выходное изображение: