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彩色图像,支持常见的三个参数值:
|
? ?
显示图像(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 | 窗口标识,常见的三种值:
|
? ?
修改图像:(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基本操作的主要内容,如果未能解决你的问题,请参考以下文章