OpenCV基本操作

Posted gghy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

}

? ?

运行结果:

技术图片

? ?

以上是关于OpenCV基本操作的主要内容,如果未能解决你的问题,请参考以下文章

Chapter0 - opencv基本操作

OpenCV高手勿入! 半小时学会基本操作 图像基础操作

OpenCV (一)Mat基本操作以及灰度图转化

OpenCV高手勿入! 半小时学会基本操作 边缘检测

Python-OpenCV —— 基本操作详解

OpenCV-Python3.OpenCV的图像基础操作