openCV学习——一、图像读取、显示、输出
openCV学习——一、图像读取、显示、输出
一、Mat imread(const string& filename,int flags=1),用于读取图片
1、参数介绍
filename:载入的图片的路径名。支持windows位图(bmp,dib)、JPEG文件(.jpeg,.jpg,.jpe)、JPEG2000文件(.jp2)、PNG图片(.png)、便携文件格式(.pbm,.pgm,.ppm)、Sun rasters光栅文件(.sr,.ras)、TIFF文件(.tiff,.tif)
flags:表示载入标识,指定加载图像的颜色类型,默认为三通道彩色图像。
常用标志符:
- CV_LOAD_IMAGE_UNCHANGED——等价取值为-1
- CV_LOAD_IMAGE_GRAYSCALE——等价取值为0,将图像转化为灰度
- CV_LOAD_IMAGE_COLOR——等价取值为1,将图像转化为彩色
- CV_LOAD_IMAGE_ANYDEPTH——等价取值为2,当载入图像深度为16位或32位,返回对应深度的图像,否则转化为8位图像返回
- CV_LOAD_IMAGE_ANYCOLOR——等价取值为4,无损的源图像
当输入有冲突时,采用较小数字值。CV_LOAD_IMAGE_COLOR|CV_LOAD_IMAGE_ANYCOLOR将载入三通道图;CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR将载入最真实无损的源图像。
若以数值表示,则:
- flags>0返回一个3通道的彩色图像
- flags=0返回灰度图像
- flags<0返回包含Alpha通道的加载图像
当以彩色载入时,通道顺序为BGR(蓝、绿、红),而非RGB。
二、void imshow(const string& winname,InputArray mat),用于显示一副图像
1、参数介绍
winname:填需要显示的窗口标志名称
mat:填需要显示的图像
2、注意事项
如果窗口用CV_WINDOW_AUTOSIZE(默认值)创建的,那么imshow将显示图像原始大小,否则将进行缩放以适应窗口:
- 如果图像为8位无符号类型,显示原来图像
- 如果为16位无符号或32位整型,使用像素值除以256,将值的范围从[0,255*256]映射到[0,255]
- 如果图像为32位浮点型,像素值乘以255.
如果窗口创建时设定支持OpenGL(WINDOW_OPENGL),则imshow还支持ogl::Buffer、ogl::Texture2D以及gpu::GpuMat作为输入。
三、void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE),用于创建窗口
1、参数介绍
name:填写窗口名称,将被用作窗口标志符
flags:窗口标志类型:
- WINDOW_NORMAL,可改变窗口大小
- WINDOW_AUTOSIZE(值为1),窗口大小会自动调整以适应所要显示的图像,且用户无法手动调整
- WINDOW_OPENGL,窗口创建时将支持OpenGL
2、其他
可以自行手动关闭窗口并释放空间:destroyWindow()或destroyAllWindows()。但是程序退出时,所有窗口将被系统自动关闭。
四、bool imwrite(const string& filename, InputArray img,const vector<int>¶ms=vector<int>()),用于输出图像到文件
1、参数介绍
filename:填写要写入的文件名,需带上后缀,即文件类型名。
img:需要输出的图像,一般为Mat类型。
params:特定格式保存的参数编码,一般不需要填写。
- 对于JPEG格式,参数从0到100,表示图片质量(CV_IMWRITE_JPEG_QUALITY)
- 对于PNG格式,表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0~9.较高的值意味着更小的尺寸和更长的压缩时间,默认为3.
- 对于PPM、PGM或PBM格式,表示一个二进制格式标识(CV_IMWRITE_PXM_BINARY),取值为0或1,默认为1.
#include<opencv2/opencv.hpp>
#include<iostream>
int main(){
cv::Mat m1 = cv::imread("D:/640.jpg",4);
cv::namedWindow("windows",CV_WINDOW_AUTOSIZE);
cv::imshow("windows",m1);
std::cout << "rows" << m1.rows << std::endl;
std::cout << "cols" << m1.cols << std::endl;
std::cout << "chr" << m1.channels()<< std::endl;
std::cout << "deeepth" << m1.depth() << std::endl;
cv::waitKey(0);
return 0;
}

出处:http://www.cnblogs.com/ivan-count/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
openCV学习——一、图像读取、显示、输出的更多相关文章
- Python下的OpenCV学习 02 —— 图像的读取与保存
OpenCV提供了众多对图片操作的函数,其中最基本的就是图片的读取与输出了. 一.读取图片 利用OpenCV读取一张图片是非常容易的,只需要用到 imread() 函数,打开shell或者cmd,进入 ...
- OpenCV学习:图像的载入和显示
一.使用IplImage结构读取并显示图像文件: 运行结果: 二.使用Mat类读取并显示图像文件: 使用 Mat 类,内存管理变得简单,不再像使用 IplImage 那样需要自己申请和释放内存,而且一 ...
- OpenCV(C++版)图像读取,创建,复制,保存,显示
http://blog.163.com/yuyang_tech/blog/static/21605008320132642254689/ 一个小例子: #include "stdafx.h& ...
- opencv学习笔记-图像叠加、混合
在图像处理中,目标区域定义为感兴趣区域ROI(region of Interest),这是后期图像处理的基础,在获取ROI后,进行一些列的处理.ROI区域在Opencv中就是Rect,先构建Rect, ...
- opencv学习笔记-图像对比度、亮度调节
在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...
- opencv3 学习三 - 图像输入输出显示等
程序如下 #include "opencv2/opencv.hpp" using namespace cv; int main() { Mat file1 = imread(&qu ...
- opencv学习(一)——图像入门
图像入门 一.读取图像 在opencv中使用cv.imread(filename, flags)函数读取图像.filename参数表示读取图像的路径.读取图像的路径应完整给出,且不能含有中文,否则在调 ...
- OpenCV基础篇之读取显示图片
程序及分析 /* * FileName : read.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 13 May ...
- opencv学习(六)——图像基本操作
图像基本操作 一.访问和修改像素值 先来理解一下,图像与一般的矩阵或张量有何不同(不考虑图像的格式,元数据等信息).首先,一张图像有自己的属性,宽,高,通道数.其中宽和高是我们肉眼可见的属性,而通道数 ...
- OpenCV加载图像并显示
从文件中读取一直一张图片,并加载出来 代码: #include "stdafx.h" #include "iostream" using namespace s ...
随机推荐
- MVC 实用架构设计(〇)——总体设计
〇.目录 一.前言 二.结构图 三.结构说明 一.前言 一直以来都想写这个系列,但基于各种理由(主要是懒惰),迟迟没有动手.今天,趁着周末的空档,终于把系列的目录公布出来了,算是开个头,也给自己一个坚 ...
- extundelete fuser
[extundelete ] fuser -mv /dev/sda6 https://blog.csdn.net/xwl145/article/details/38896699 多列排序[sort]h ...
- idea设置文件的编码格式为utf-8
file ---> settings... 然后 editor ---> file encoding 然后设置path和encoding什么的.
- 【PyQt5-Qt Designer】添加图片+鼠标点击
添加图片+鼠标点击 graphicsView中添加图片 效果图 添加之后左边1处 生成qrc文件 选择文件右键编译-生成图片的16进制文件 课后作业:
- Python中的下划线(转)
译文原文:https://segmentfault.com/a/1190000002611411 原文地址这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线_的不同用法绝大 ...
- kvc原理
KVC底层实现原理 第一步:寻找该属性有没有setsetter方法?有,就直接赋值 第二步:寻找有没有该属性带下划线的成员属性?有,就直接赋值 第三步:寻找有没有该属性的成员属性?有,就直接赋值 1. ...
- synchronized同一把锁锁不同代码
对于多线程,如果是计算密集型,多线程不一定优势:但如果是io密集型(因为速度慢),多线程多数情况下就有很大的优势了(但也不全是,因为当io已经满负荷运转下,即100%了,再增加线程,未必就会增加效率) ...
- finecms在任意页面调用栏目名称和地址等
finecms如何调用栏目名称和地址呢?在任意页面.我们有时需要在不同的页面调用某个栏目名,怎么调用比较快呢?ytkah整理了一些快速调用语句方便查找 栏目名称:{dr_cat_value(栏目id, ...
- mysql跨库复制: replicate_wild_do_table和replicate-wild-ignore-table
使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错. 如设置 replicate_do_db=testuse mysql;update test. ...
- 递归与非递归打印乘法口诀表--Scala(指令式、函数式思维练习)
object Test extends App { def printMultiTable() { var i = 1 while (i < 10) { var j = 1 while (j & ...