OpenCV学习-1、图像处理入门

文章目录

    • 1|图像入门
      • 1.1、imread()读取图像
      • 1.2、imshow()显示图像
      • 1.3、**waitKey**()键盘绑定函数
      • 1.4、**destroyAllWindows**()破坏创建的所有窗口
      • 1.5、namedWindow()创建一个空窗口
      • 1.6、imwrite()保存图像
      • 1.7、例子

1|图像入门

参考OpenCV中文官方文档

1.1、imread()读取图像

Mat imread( const String& filename, int flags = IMREAD_COLOR );

第一个参数为图像路径

第二个参数可以为1,0,-1,分别表示彩色模式、灰度模式、加载图像包括alpha通道

1.2、imshow()显示图像

void imshow(const String& winname, const ogl::Texture2D& tex);

窗口自动适合图像尺寸。

第一个参数是窗口名称,它是一个字符串。第二个参数是我们的对象。你可以根据需要创建任意多个窗口,但可以使用不同的窗口名称。

1.3、waitKey()键盘绑定函数

int waitKey(int delay = 0);

参数是以毫秒为单位的时间。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。如果0被传递,它将无限期地等待一次敲击键。

通常和destroyAllWindows()配合使用

1.4、destroyAllWindows()破坏创建的所有窗口

destroyAllWindows()只会破坏我们创建的所有窗口。

如果要销毁任何特定的窗口,请使用函数 destroyWindow()在其中传递确切的窗口名称作为参数。

1.5、namedWindow()创建一个空窗口

void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);

然后再将图像加载到该窗口

  • 在这种情况下,你可以指定窗口是否可调整大小。这是通过功能cv.namedWindow()完成的。
  • 默认情况下,该标志为cv.WINDOW_AUTOSIZE。但是,如果将标志指定为cv.WINDOW_NORMAL,则可以调整窗口大小。

1.6、imwrite()保存图像

bool imwrite( const String& filename, InputArray img,
              const std::vector<int>& params = std::vector<int>());

第一个参数是文件名,第二个参数是要保存的图像。

1.7、例子

#include 
#include "opencv2/opencv.hpp"
#include 
#include 
using namespace cv;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    /**
     * @brief 加载图像imread
     * 第二个参数可以为1,0,-1,分别表示彩色模式、灰度模式、加载图像包括alpha通道
     */
    Mat src = imread("./../../images/book.bmp",0);

    /**
     * @brief namedWindow创建一个空窗口,然后再将图像加载到该窗口
     * 在这种情况下,你可以指定窗口是否可调整大小。这是通过功能**cv.namedWindow**()完成的。
     * 默认情况下,该标志为**cv.WINDOW_AUTOSIZE**。但是,如果将标志指定为**cv.WINDOW_NORMAL**,则可以调整窗口大小。
     */
    namedWindow("img");
//    namedWindow("img",WINDOW_NORMAL);

    /**
     * @brief imshow显示图像
     *  1.窗口自动适合图像尺寸。
    2.第一个参数是窗口名称,它是一个字符串。第二个参数是我们的对象。你可以根据需要创建任意多个窗口,但可以使用不同的窗口名称。
     */
    imshow("img",src);

    /**
     * @brief imwrite保存图像
     * 第一个参数是文件名,第二个参数是要保存的图像
     */
//    imwrite("./../../images/new1.bmp",src);

    //按s保存图像并退出,或者按ESC键直接退出而不保存。
    char k = waitKey(0);
    if(k == 27){
        destroyAllWindows();
    }else if(k == 's') {
        imwrite("./../../images/new1.bmp",src);
        destroyAllWindows();

}
    /**
     * @brief waitKey键盘绑定函数。其参数是以毫秒为单位的时间
     *该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。如果**0**被传递,它将无限期地等待一次敲击键。
     */
//    waitKey(0);

    /**
     * @brief destroyAllWindows破坏我们创建的所有窗口。
     * 如果要销毁任何特定的窗口,请使用函数 cv.destroyWindow()在其中传递确切的窗口名称作为参数。
     */
//    destroyAllWindows();

    return a.exec();
}

你可能感兴趣的:(OpenCV,opencv,图像处理,学习)