在本文中,我们将讨论使用C++中的OpenCV(开放源计算机视觉)打开图像。与Python不同,不需要C++中的任何其他库。 OpenCV C++附带了这个惊人的图像容器Mat,它可以为我们处理所有事情。从标准C++程序看到的唯一变化是包含名称空间cv ,该名称空间包含所有OpenCV函数,类和数据结构。在OPenCV中读取和显示图像需要以下功能:
imread() :此函数用于读取图像,并接受以下2个参数:
- filename:要加载的图像的完整地址为字符串类型。例如:“ C:\ users \ downloads \ sample.jpg”
- flag:这是一个可选参数,它确定读取图像的方式,并可以采用多个值,例如
- IMREAD_COLOR:如果未提供任何参数,则默认的加载图像的方式。它以BGR格式加载图像。
- IMREAD_UNCHANGED:它以原始形式加载图像。它还包括图像中存在的Alpha通道。
- IMREAD_GRAYSCALE:它将图像加载为灰度图像。
输出:返回图像作为Mat对象
用法:
// Reading the image file
Mat image = imread(“C:/users/downloads/default.jpg”, IMREAD_grayscale);
imshow() :此函数用于显示图像,并接受以下两个参数:
- winname或窗口名:这是显示图像的窗口的标题,类型为字符串。
- 图像:这是要显示的图像。它的类型是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
#include
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等的更多准备工作,请参阅“完整面试准备课程” 。