opencv3 学习三 - 图像输入输出显示等
程序如下
#include "opencv2/opencv.hpp"
using namespace cv;
int main()
{
Mat file1 = imread("girl.jpg",CV_LOAD_IMAGE_UNCHANGED);
Mat file2 = imread("girl.jpg", CV_LOAD_IMAGE_GRAYSCALE);
namedWindow("Color", CV_WINDOW_FREERATIO);
namedWindow("Fixed", CV_WINDOW_AUTOSIZE);
imshow("Color", file1);
imshow("Fixed", file2);
resizeWindow("Color", file1.cols / 2, file1.rows / 2);
resizeWindow("Fixed", file2.cols / 2, file2.rows / 2);
moveWindow("Color", 600, 400);
moveWindow("Fixed", 600 + file1.cols + 5, 400);
waitKey(0);
}
运行结果如下:

图片中的这把尺是测量图片像素的,不是图片本身。
1. imread函数,读取图片
函数原型:
Mat imread(const String& filename, int flag = CV_LOAD_IMAGE_COLOR)
参数说明:
- filename: 待打开图片的文件名,支持常见的图片格式
- flag: 这里只简单说明例子中用到的二个参数
- CV_LOAD_IMAGE_UNCHANGED: 不进行转化,以原有图片的格式读取
- CV_LOAD_IMAGE_GRAYSCALE: 转化为灰度图,类型为CV_8UC1
通过调试器,我们可以看到本例中,file1 = {UINT8, 3 x 389 x 292},
file2 = {UINT8, 1 x 389 x 292}。这里选择file1作为说明,其中:
file1.cols = 389, 表示图片水平方向
file1.rows = 292, 表示图片的垂直方向
file1.channels = 3, 表示图片的通道数
2. namedWindow函数, 生成一个窗口
函数原型如下:
void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE)
参数说明:
- winname: 窗口标识符,也就是窗口的名字,见图片中的 Color, Fixed 等
- flags: 窗口的类型
- CV_WINDOW_FREERATIO, 窗口自适应图片大小,可以窗口用鼠标调整大小
- CV_WINDOW_AUTOSIZE, 窗口自适应图片大小,但窗口不能通过鼠标调整大小
3. imshow函数,显示图片
函数原型:
void imshow(const String& winname, InputArray mat)
参数说明:
- winname: 显示窗口的名字
- mat: 待显示的图像
4. resizedWindow函数,调整窗口的大小
函数原型:
void resizeWindow(const String& winname, int width, int height)
参数说明:
- winname: 指定调整窗口的名字
- width: 新窗口的宽度
- height: 新窗口的高度
注意:对于namedWindow函数,选用 CV_WINDOW_AUTOSIZE 参数,如果width和height小于原图片,那么调整后的图片是不能全部显示图片。Fixed 和 Color 图中区别很明显。
4. moveWindow函数,移动窗口
函数原型:
void moveWindow(const String& winname, int x, int y)
函数说明:
- winname: 移动窗口的名字
- x: 窗口左边到屏幕左边的距离,单位为像素
- y: 窗口上边到屏幕上边的距离,单位为像素
本例中,Fixed 相对于 Color 右移了 file1.cols + 5 个像素,file1.cols = 389, 从图片中的标尺可以看到,正好 394 个像素。注意都是以窗口的左侧边框为基准。
opencv3 学习三 - 图像输入输出显示等的更多相关文章
- opencv3 学习四 - 图像减色
程序如下 #include "opencv2/opencv.hpp" using namespace cv; int main() { // 灰度图 Mat original = ...
- 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中
//从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ...
- Struts2框架学习(三) 数据处理
Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...
- Python学习 Part5:输入输出
Python学习 Part5:输入输出 1. 格式化输出 三种输出值的方法: 表达式语句 print()函数 使用文件对象的write()方法 两种方式格式化输出: 由自己处理整个字符串,通过使用字符 ...
- DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- [ZZ] 深度学习三巨头之一来清华演讲了,你只需要知道这7点
深度学习三巨头之一来清华演讲了,你只需要知道这7点 http://wemedia.ifeng.com/10939074/wemedia.shtml Yann LeCun还提到了一项FAIR开发的,用于 ...
- day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- 深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全 原文地址:Image Completion with Deep Learning in TensorFlow by Bra ...
- SCARA——OpenGL入门学习三
OpenGL入门学习[三] 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点太小,难以看清楚:直线也太细,不舒服:或者想画虚线,但不知道方法只能用 ...
随机推荐
- Data Flow ->> Excel Connection遇到错误:[Excel Source [16]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.....
在SSIS下做Excel导入数据的时候遇到下面的错误 [Excel Source [16]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONF ...
- C++11标准之右值引用(rvalue reference)
1.右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题.但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision.RVO(包 ...
- linux oom-killer
本人从事UTM的开发工作,最近遇到out of memory killer.这里整理一下资料. 简述 当系统内存不足时,系统会触发 oom-killer.oom-killer的机制就是选择杀掉最适合的 ...
- SIMATIC 1500 PLC 同步轴,状态字StatusWord信号描述
轴名. StatusWord.X21 (Synchronizing) 正在建立同步 轴名. StatusWord.X22 (Synchronous) 已经建立同步
- 使用jMeter构造逻辑上有依赖关系的一系列并发请求
相信前端开发工程师对CSRF(Cross-site request forgery)跨站请求伪造这个概念都非常熟悉,有的时候也简写成XSRF,是一种对网站的恶意利用. 尽管听起来像跨站脚本(XSS), ...
- Dz7.2 从获取uc key到getshell
0x01下午在群里看到的 问下朋友大概 然后用不生不熟的sqlmap在那跑–表能跑的出 列就GG了 然后没辙–晚上跑各大论坛逛了遍果然大神多 就慢慢的研究下了下 看了pt0n大牛的分析文 真心感叹这洞 ...
- API 网关
使用 API 网关 链接:https://github.com/oopsguy/microservices-from-design-to-deployment-chinese译者:Oopsguy ...
- SOA架构
基于服务的SOA架构_后续篇 今天是元宵节,首先祝各位广大博友在接下来的光阴中技术更上一层,事事如意!(没能在元宵节发布,今天就补上吧) 昨天简单介绍了一下本人在近期开发过的一个电商购物平台的架构 ...
- hdu-2619 Love you Ten thousand years
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2619 题目大意: 求出小于n的数的个数,满足ki mod n,1≤i≤n是模n的完全剩余系 解题思路 ...
- Django 创建模型 激活模型 简单的使用模型
创建模型: 在你的开发环境中,已经有一个“项目” —— 已经建立起来,你将开始在上面做一些东西. 你编写的每个Django应用都是一个遵循特定约定的Python包. Django自带一个工具,它可以自 ...