OpenCV基本操作

加载图像(cv::imread)

功能:是加载一个图像文件成为Mat对象

格式:

1

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

解释:

参数类型的

描述

const String& 类型的 filename

表示图像文件的名称,常见的图像格式有JPG、PNG、TIFF等

 

   

int 类型的 flags

表示加载图像是什么类型,默认为三通道RGB彩色图像,支持常见的三个参数值:

  • IMREAD_UNCHANGED (<0)表示加载原图,不做任何改变
  • IMREAD_GRAYSCALE (0)表示把原图作为灰度图加载进来
  • IMREAD_COLOR (>0)表示将原图作为RGB图像加载进来

   

显示图像(cv::imshow)

功能:是根据窗口名称显示图像到窗口上去

格式:

1

void imshow(const String& winname, InputArray mat);

解释:

参数类型的

描述

const String& 类型的 winname

填需要显示的窗口标示名称

InputArray 类型的 mat

填需要显示的图像

   

创建窗口(cv::namedWindow

功能:是创建一个OpenCV窗口,它由OpenCV自动创建于释放。

格式:

1

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

解释:

参数

描述

Const 类型的 String& winname

填写创建窗口名称

 

   

Int 类型的 flags

窗口标识,常见的三种值:

  • WINDOW_AUTOSIZE 根据图像大小显示窗口大小,无法修改窗口的小
  • WINDOW_NORMAL 根据自己需求修改窗口大小,跟QT集成的时候会使用
  • WINDOW_OPENGL 创建支持OpenGL的窗口

   

修改图像:(cv::cvtColor)

作用:cvtColor的功能是将图像从一个色彩空间转换到另一个色彩空间。

格式:

1

void cvtColor( InputAvoid cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );

解释:

参数

描述

InputAvoid cvtColor( InputArray src

原图像

OutputArray dst

色彩空间转换之后的图像

Int 类型的 dstCn

源和目标色彩空间例如:COLOR_BGR2HLS、COLOR_BGR2GRAY等

   

保存图像到指定文件:imread()函数

格式:

1

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

参数:

参数

描述

const 类型的 String& filename

填写存储出的位置、文件名称以及后缀例如"D:/1.jpg"

InputArray 类型的 img

一般填写Mat类型的图像数据名称

Const 类型的 std

表示为指定格式保存的参数编码(一般可不填)

   

颜色空间转换:cvtColor()函数

格式:

1

void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );

参数:

参数

描述

InputArray src

输入图像

OutputArray dst

输出图像

Int 类型的 code

颜色空间转换的标识符

Int 类型的 dstCn

目标图像的通道数,默认为0,表示目标图像取源图像的通道数

例子:

1

2

Mat src1, dst;

cvtColor(src1, dst, CV_BGR2GRAY);

拓展:

   

完整实例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#include <opencv2/opencv.hpp>

#include <iostream>

#include <math.h>

   

using namespace cv;

int main(int argc, char**argv)

{

        Mat src = imread("./picture/1.jpg");        //Mat src = imread("D:/Picture/123.jpg", IMREAD_GRAYSCALE);看、可以为绝对路径与相对路径

        if (src.empty())

        {

                printf("路径不对");

                return -1;

        }

        /*namedWindos创建一个OpenCV窗口                */

        imshow("input", src);

   

        namedWindow("output_Gary", WINDOW_AUTOSIZE);        

        /*

         WINDOW_AUTOSIZE:自动调整为适应图像大小窗口

         WINDOW_NORMAL:用户可以改变窗口大小

         WINDOW_OPENGL;创建窗口支持OPENGL

         IMREAD_COLOR作为RGB加载

        */

        Mat output_woman;

        cvtColor(src, output_woman, CV_BGR2GRAY);        //将图像转换为灰度图

        imshow("output_Gary", output_woman);

   

        imwrite("焰灵姬.jpg", output_woman);        //保存图像

   

        waitKey(0);

        return 0;

}

   

运行结果:

   

原文地址:https://www.cnblogs.com/gghy/p/12234496.html