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 个像素。注意都是以窗口的左侧边框为基准。
转载于:https://www.cnblogs.com/TomDing/p/9510677.html
opencv3 学习三 - 图像输入输出显示等相关推荐
- OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换
OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...
- OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽
OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...
- 【技术综述】图像与CNN发家简史,集齐深度学习三巨头
文章首发于微信公众号<有三AI> [技术综述]图像与CNN发家简史,集齐深度学习三巨头 没有一个经典的发现会是突然之间横空出世,它总是需要一些积淀. 提起卷积神经网络,我们总会从LeNet ...
- OpenCV与图像处理学习一——图像基础知识、读入、显示、保存图像、灰度转化、通道分离与合并
OpenCV与图像处理学习一--图像基础知识.读入.显示.保存图像.灰度转化.通道分离与合并 一.图像基础知识 1.1 数字图像的概念 1.2 数字图像的应用 1.3 OpenCV介绍 二.图像属性 ...
- TensorFlow练手项目三:使用VGG19迁移学习实现图像风格迁移
使用VGG19迁移学习实现图像风格迁移 2020.3.15 更新: 使用Python 3.7 + TensorFlow 2.0的实现: 有趣的深度学习--使用TensorFlow 2.0实现图片神经风 ...
- OPENCV-3 学习笔记
OPENCV-3 学习笔记 imread()读入图,第一个参数,const string&类型的filename,填我们需要载入的图片路径名, 第二个参数,int类型的flags,为载入标识, ...
- OpenCV3学习(12.5) opencv实现粒子滤波目标跟踪
OpenCV高版本已经把粒子滤波的CV方面的condensation算法给去掉了,以前学的condensation算法不能用C++开发还是只能用C版本,(OpenCV3学习(12.4) 粒子滤波Con ...
- 深度学习三巨头共获 2018 年图灵奖(经典重温)!
整理 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 2019 年 3 月 27 日,ACM 宣布,深度学习三位大牛 Yoshua Bengio.Yann LeCun.Geoffrey ...
- 学习笔记之——基于深度学习的图像超分辨率重建
最近开展图像超分辨率( Image Super Resolution)方面的研究,做了一些列的调研,并结合本人的理解总结成本博文~(本博文仅用于本人的学习笔记,不做商业用途) 本博文涉及的paper已 ...
最新文章
- 数据库连接池为什么要用threadlocal呢?不用会怎样?
- LeetCode 91. Decode Ways--动态规划DP的Python和Java解法
- java函数求方程,Commons Math学习笔记——函数方程求解
- YbtOJ-大收藏家【分层图,最大流】
- iLogtail使用入门-K8S环境日志采集到SLS
- 查看python下安装的包有哪些
- ubuntu中wps缺失字体
- Windows 365 以明文形式暴露微软 Azure 凭据
- mysql中文显示问号,不能识别中文的解决方案
- Ubuntu下安装uwsgi报错的解决方案
- OpenInventor笔记:线性坐标轴PoLinearAxis的使用
- 如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题 #10
- 秩为 1 的矩阵的一些性质
- 2019 年各地移动 APT事件总结
- celeste第二章_魂源蔚蓝-第二章:源士的力量体系-爱阅小说网
- 内存错误分析工具----asan(AddressSanitizer)的介绍和使用
- matlab gui双音拨号,用matlab GUI功能模拟DTMF拨号系统.doc
- WinRM 服务无法创建以下 SPN: /WSMAN/DC.contoso.com; WSMAN/DC
- docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake ti
- MFC 公用函数和函数指针和动态库
热门文章
- birt插件 web_好用的国产web报表软件非它莫属,轻松搞定复杂报表
- Counting 4-Cliques
- php中table,thinkphp中的table方法怎样使用?
- delphi接口带上请求头是什么意思_Gin框架中使用JWT进行接口验证
- 2015蓝桥杯C++A:手链样式(圆排列和环排列)
- jQuery Mobile中列表listview(ol、ul)的data-*选项
- python书写跨越多行的字符串的两种方式
- quartus仿真系列2:74193功能
- Janusec WAF网关安装体验
- ios -特殊符号大全分享给大家,直接复制粘贴就可以使用了!