程序如下

#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)

参数说明:

  1. filename: 待打开图片的文件名,支持常见的图片格式
  2. 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)

参数说明:

  1. winname: 窗口标识符,也就是窗口的名字,见图片中的 Color, Fixed 等
  2. flags: 窗口的类型
    • CV_WINDOW_FREERATIO, 窗口自适应图片大小,可以窗口用鼠标调整大小
    • CV_WINDOW_AUTOSIZE, 窗口自适应图片大小,但窗口不能通过鼠标调整大小

3. imshow函数,显示图片

函数原型:

void imshow(const String& winname, InputArray mat)

参数说明:

  1. winname: 显示窗口的名字
  2. mat: 待显示的图像

4. resizedWindow函数,调整窗口的大小

函数原型:

void resizeWindow(const String& winname, int width, int height)

参数说明:

  1. winname: 指定调整窗口的名字
  2. width: 新窗口的宽度
  3. height: 新窗口的高度

注意:对于namedWindow函数,选用 CV_WINDOW_AUTOSIZE 参数,如果width和height小于原图片,那么调整后的图片是不能全部显示图片。Fixed 和 Color 图中区别很明显。

4. moveWindow函数,移动窗口

函数原型:

void moveWindow(const String& winname, int x, int y)

函数说明:

  1. winname: 移动窗口的名字
  2. x: 窗口左边到屏幕左边的距离,单位为像素
  3. y: 窗口上边到屏幕上边的距离,单位为像素

本例中,Fixed 相对于 Color 右移了 file1.cols + 5 个像素,file1.cols = 389, 从图片中的标尺可以看到,正好 394 个像素。注意都是以窗口的左侧边框为基准。

转载于:https://www.cnblogs.com/TomDing/p/9510677.html

opencv3 学习三 - 图像输入输出显示等相关推荐

  1. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  2. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  3. 【技术综述】图像与CNN发家简史,集齐深度学习三巨头

    文章首发于微信公众号<有三AI> [技术综述]图像与CNN发家简史,集齐深度学习三巨头 没有一个经典的发现会是突然之间横空出世,它总是需要一些积淀. 提起卷积神经网络,我们总会从LeNet ...

  4. OpenCV与图像处理学习一——图像基础知识、读入、显示、保存图像、灰度转化、通道分离与合并

    OpenCV与图像处理学习一--图像基础知识.读入.显示.保存图像.灰度转化.通道分离与合并 一.图像基础知识 1.1 数字图像的概念 1.2 数字图像的应用 1.3 OpenCV介绍 二.图像属性 ...

  5. TensorFlow练手项目三:使用VGG19迁移学习实现图像风格迁移

    使用VGG19迁移学习实现图像风格迁移 2020.3.15 更新: 使用Python 3.7 + TensorFlow 2.0的实现: 有趣的深度学习--使用TensorFlow 2.0实现图片神经风 ...

  6. OPENCV-3 学习笔记

    OPENCV-3 学习笔记 imread()读入图,第一个参数,const string&类型的filename,填我们需要载入的图片路径名, 第二个参数,int类型的flags,为载入标识, ...

  7. OpenCV3学习(12.5) opencv实现粒子滤波目标跟踪

    OpenCV高版本已经把粒子滤波的CV方面的condensation算法给去掉了,以前学的condensation算法不能用C++开发还是只能用C版本,(OpenCV3学习(12.4) 粒子滤波Con ...

  8. 深度学习三巨头共获 2018 年图灵奖(经典重温)!

    整理 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 2019 年 3 月 27 日,ACM 宣布,深度学习三位大牛 Yoshua Bengio.Yann LeCun.Geoffrey ...

  9. 学习笔记之——基于深度学习的图像超分辨率重建

    最近开展图像超分辨率( Image Super Resolution)方面的研究,做了一些列的调研,并结合本人的理解总结成本博文~(本博文仅用于本人的学习笔记,不做商业用途) 本博文涉及的paper已 ...

最新文章

  1. 数据库连接池为什么要用threadlocal呢?不用会怎样?
  2. LeetCode 91. Decode Ways--动态规划DP的Python和Java解法
  3. java函数求方程,Commons Math学习笔记——函数方程求解
  4. YbtOJ-大收藏家【分层图,最大流】
  5. iLogtail使用入门-K8S环境日志采集到SLS
  6. 查看python下安装的包有哪些
  7. ubuntu中wps缺失字体
  8. Windows 365 以明文形式暴露微软 Azure 凭据
  9. mysql中文显示问号,不能识别中文的解决方案
  10. Ubuntu下安装uwsgi报错的解决方案
  11. OpenInventor笔记:线性坐标轴PoLinearAxis的使用
  12. 如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题 #10
  13. 秩为 1 的矩阵的一些性质
  14. 2019 年各地移动 APT事件总结
  15. celeste第二章_魂源蔚蓝-第二章:源士的力量体系-爱阅小说网
  16. 内存错误分析工具----asan(AddressSanitizer)的介绍和使用
  17. matlab gui双音拨号,用matlab GUI功能模拟DTMF拨号系统.doc
  18. WinRM 服务无法创建以下 SPN: /WSMAN/DC.contoso.com; WSMAN/DC
  19. docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake ti
  20. MFC 公用函数和函数指针和动态库

热门文章

  1. birt插件 web_好用的国产web报表软件非它莫属,轻松搞定复杂报表
  2. Counting 4-Cliques
  3. php中table,thinkphp中的table方法怎样使用?
  4. delphi接口带上请求头是什么意思_Gin框架中使用JWT进行接口验证
  5. 2015蓝桥杯C++A:手链样式(圆排列和环排列)
  6. jQuery Mobile中列表listview(ol、ul)的data-*选项
  7. python书写跨越多行的字符串的两种方式
  8. quartus仿真系列2:74193功能
  9. Janusec WAF网关安装体验
  10. ios -特殊符号大全分享给大家,直接复制粘贴就可以使用了!