admin 管理员组文章数量: 894082
【opencv】2.图像读取、显示、输出
看得见的东西往往使我们更有兴致,从看得见的开始学
【一】头文件和名字空间
你可以直接包含整个opencv的所有文件,也可以按需包含各个模块文件,模块结构的划分可以参考博文:opencv模块结构划分,这个以后可以慢慢了解,现在我们暂时包含整个opencv的所有文件吧。opencv的使用了独立的名字空间cv。代码如下:
#include <opencv2/opencv.hpp>
using namespace cv;
【二】图片读取
读取函数是imread()
函数原型:
Mat imread(const string& filename,intflags=1 );
输入:参数1为图像路径和图片名,参数2为图像颜色类型
输出:一个mat,这是一个表示图像的类。
附:–>opencv支持的图片类型为有如下几种
Windows位图 - .bmp, .dib
JPEG文件 - .jpeg, .jpg, .jpe
JPEG 2000文件- .jp2
PNG图片 - .png
Sun rasters光栅文件 - .sr, .ras
TIFF 文件 - .tiff, .tif
–>参数2取值:
CV_LOAD_IMAGE_UNCHANGED-,这个标识在新版本中被废置了,忽略。
CV_LOAD_IMAGE_ANYDEPTH- 如果取这个标识的话,若载入的图像的深度为16 位或者32位,就返回对应深度的图像,否则,就转换为8位图像再返回。
CV_LOAD_IMAGE_COLOR- 如果取这个标识的话,总是转换图像到彩色一体
CV_LOAD_IMAGE_GRAYSCALE- 如果取这个标识的话,始终将图像转换成灰度1
【三】图像显示
1.在显示图像之前,需要创建一个容纳图像的窗口,使用namedWindow()函数来创建窗口
函数原型:
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
输入:
参数1为窗口名,也是窗口id,是窗口的唯一标识
参数2为窗口类型
附:
窗口类型
WINDOW_NORMAL:设置了这个值,用户便可以改变窗口的大小(没有限制)
WINDOW_AUTOSIZE:如果设置了这个值,窗口大小会自动调整以适应所显示的图像,并且不能手动改变窗口大小。
WINDOW_OPENGL: 如果设置了这个值的话,窗口创建的时候便会支持OpenGL。
2.图片显示函数imshow()
函数原型:
void imshow(const string& winname, InputArray mat);
输入:
参数1为窗口标识,输入之前创建的窗口名即可
参数2为要显示的图片(这里的InputArray将其简单看成一个mat类就行)
【四】图片输出
很多时候我们需要将处理之后的图片输出到文件中,可以使用imwrite()函数
函数原型:
bool imwrite(const string& filename,InputArray img, const vector<int>& params=vector<int>() );
输入:
参数1为文件名,其中可以包含文件路径,输出格式有文件扩展名决定,固需要加上文件扩展名
参数2为需要输出的图片,输入对应mat即可
参数3表示为特定格式保存的参数编码,主要是图片质量或压缩比之类的参数,一般可以缺省,见附。
输出:
是否输出成功的bool值。
附:
对于JPEG格式的图片,这个参数表示从0到100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95.
对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0到9。较高的值意味着更小的尺寸和更长的压缩时间,而默认值是3。
对于PPM,PGM,或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或1,而默认值是1。
【五】一个综合的实例
#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;
int main(){const char* path = "F:/test.jpg";//从文件中读入图像Mat img = imread(path);//如果读入图像失败if (img.empty()){fprintf(stderr, "Can not load image %s\n", path);return -1;}//显示图像imshow("image", img);//输出文件imwrite("F:/output.jpg", img);//此函数等待按键,按键盘任意键就返回waitKey();return 0;
}
显示:
输出文件:
本文标签: opencv2图像读取显示输出
版权声明:本文标题:【opencv】2.图像读取、显示、输出 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687603832h120101.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论