- 加载图像(使用cv :: imread)
- 创建一个名为OpenCV的窗口(使用cv :: namedWindow)
- 在OpenCV窗口中显示图像(使用cv :: imshow)
-
#include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgui.hpp> #include <iostream> #include <string> using namespace cv; using namespace std; int main( int argc, char** argv ) { String imageName( "../data/HappyFish.jpg" ); // by default if( argc > 1) { imageName = argv[1]; } Mat image; image = imread( imageName, IMREAD_COLOR ); // Read the file if( image.empty() ) // Check for invalid input { cout << "Could not open or find the image" << std::endl ; return -1; } namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display. imshow( "Display window", image ); // Show our image inside it. waitKey(0); // Wait for a keystroke in the window return 0; }
现在我们调用加载第一个参数(argv [1])指定的映像名称的cv :: imread函数。第二个参数指定了我们想要的图像的格式。这可能是:
- IMREAD_UNCHANGED(<0)按原样加载图像(包括alpha通道(如果存在)
- IMREAD_GRAYSCALE(0)将图像作为强度加载
- IMREAD_COLOR(> 0)以RGB格式加载图像
image = imread( imageName, IMREAD_COLOR ); // Read the file
检查图像数据是否正确加载后,我们要显示图像,因此我们使用cv :: namedWindow函数创建一个OpenCV窗口。创建OpenCV后,它们将自动进行管理。为此,您需要指定其名称,以及如何从大小角度处理其包含的图像的更改。可能是:
- 如果不使用Qt后端,WINDOW_AUTOSIZE是唯一支持的。在这种情况下,窗口大小将占据显示的图像的大小。不允许调整大小!
- WINDOW_NORMAL在Qt你可以使用它来允许窗口调整大小。图像将根据当前窗口大小自行调整大小。通过使用| 操作员还需要指定是否希望图像保持其宽高比(WINDOW_KEEPRATIO)(WINDOW_FREERATIO)。
-
namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
最后,要使用新的图像更新OpenCV窗口的内容,请使用cv :: imshow函数。指定要更新的OpenCV窗口名称和此操作期间要使用的映像:
imshow( "Display window", image ); // Show our image inside it.
因为我们希望我们的窗口被显示直到用户按下一个键(否则程序会结束太快),所以我们使用cv :: waitKey函数,其唯一的参数是等待用户输入需要多长时间毫秒)。零意味着永远等待。
waitKey(0); // Wait for a keystroke in the window