Opencv 图片 读取,显示,保存基本操作
Opencv的图片读取,显示,保存是图片操作的基础,实验用的图片来自于lenan:http://www.lenna.org/
为了使用方
便,主要是使用opencv的python版本的接口,其官网链接为http://docs.opencv.org/
Read an image
opencv读取图片API为cv.read,其API原型为:
retval = cv.imread( filename[, flags] )
参数意义:
filename: 必选项,为要读取到的图片文件名,包括其文件所在的路径
flags:可选项,默认为cv.IMREAD_COLOR,该参数主要为要读取到的图片方式,经常用到的主要由以下几个选项
Flags | Description |
cv.IMREAD_COLOR | 读取其彩色图片,为RGB通道,其值为1 |
cv.IMREAD_GRAYSCALE | 读取灰色图,单通道,其值为0 |
cv.IMREAD_UNCHANGED | 除了读取彩色图片外,还包括alpha通道,其值为-1 |
目前,opencv imread支持的图片名后缀格式:
- Windows bitmaps - *.bmp, *.dib (always supported)
- JPEG files - *.jpeg, *.jpg, *.jpe (see the Note section)
- JPEG 2000 files - *.jp2 (see the Note section)
- Portable Network Graphics - *.png (see the Note section)
- WebP - *.webp (see the Note section)
- Portable image format - *.pbm, *.pgm, *.ppm *.pxm, *.pnm (always supported)
- PFM files - *.pfm (see the Note section)
- Sun rasters - *.sr, *.ras (always supported)
- TIFF files - *.tiff, *.tif (see the Note section)
- OpenEXR Image files - *.exr (see the Note section)
- Radiance HDR - *.hdr, *.pic (always supported)
- Raster and Vector geospatial data supported by GDAL (see the Note section)
其用例如下:
import numpy as np
import cv2 as cvimg = cv.imread(".././datasheet/len_top.jpg",cv.IMREAD_COLOR)
cv.imshow('lenna',img)
读取图片的C++接口如下,和python接口类似:
Mat cv::imread (const String & filename,int flags = IMREAD_COLOR )
返回为Mat, flags参数列表如下:
flags | Description |
IMREAD_UNCHANGED = -1 | 按照原图进行加载,不做任何改变 |
IMREAD_GRAYSCALE = 0 | 将图片按照单通道灰度图进行加载,加载结果为单通道灰度值 |
IMREAD_COLOR = 1 | 将图片按照BGR3通道进行加载,加载结果为彩色三通道 |
IMREAD_ANYDEPTH = 2 | 读取其深度图片,个人理解是可以读取16位或者32位图片,与输入的原图位数一致 |
IMREAD_ANYCOLOR = 4 | 读取原图为任意彩色图模式 |
IMREAD_LOAD_GDAL = 8 | 使用gdal驱动程序加载图像(暂时不知道又何用处,做了下实验如果是彩色图,加载出来的mat是多通道) |
IMREAD_REDUCED_GRAYSCALE_2 = 16 | 将图片加载为灰度图,且图像长和宽为分别为原图的1/2 |
IMREAD_REDUCED_COLOR_2 = 17 | 将图片按照BGR3通道进行加载,且图像长和宽为分别为原图的1/2 |
IMREAD_REDUCED_GRAYSCALE_4 = 32 | 将图片加载为灰度图,且图像长和宽为分别为原图的1/4 |
IMREAD_REDUCED_COLOR_4 = 33 | 将图片按照BGR3通道进行加载,且图像长和宽为分别为原图的1/4 |
IMREAD_REDUCED_GRAYSCALE_8 = 64 | 将图片加载为灰度图,且图像长和宽为分别为原图的1/8 |
IMREAD_REDUCED_COLOR_8 = 65 | 将图片按照BGR3通道进行加载,且图像长和宽为分别为原图的1/8 |
IMREAD_IGNORE_ORIENTATION = 128 | 不以EXIF的方向旋转图像 |
对上述flags的值划分理解可以参考下面的一篇博客:
https://blog.csdn.net/ruibin_cao/article/details/80312799
Display an image
将图片加载到内存后,在程序运行过程中经常需要调试,图片无法想其他的程序打印debug信息,但是在调试过程中经常需要查看算法的效果,把图片显示出来,这就需要用到图片的显示功能,opencv中图片显示使用cv.imshow()可以直接把图片显示到屏幕上,其API接口为:
None = cv.imshow( winname, mat )
参数
winname:必选项,为显示图片的windows窗口的title
mat:为使用imread读取到的图片到mat数据结构中
一般在使用cv.imshow之后,需要使用cv.waitKey()其参数为毫秒,在多少毫秒之内等待敲入一个键盘,超时或者在时间之内按下一个键盘,程序将继续往前走,经常用到cv.imshow之后,用于观察图片算法之后的效果,waitkey(0)表示为无限等待,只有敲入一个键盘之后才能往下走, waitKey返回的值就是所敲入键盘的ascii的值。
注意在处理完之后需要使用cv.destroyAllWindows将创建的窗口销毁。
示范用例:
cv.imshow('lenna',img)
cv.waitKey(0)
cv.destroyAllWindows()
其C++接口类似:
void cv::imshow (const String & winname,InputArray mat )
Write an image
保存图片是图像处理中经常用到的,其API原型为:
retval = cv.imwrite( filename, img[, params] )
filename:为要保存的文件名(可以带路径)
img:图片数据
其C++接口为:
bool cv::imwrite ( const String & filename,InputArray img,const std::vector< int > & params = std::vector< int >() )
- JPEG格式的图片, param参数表示为从0到100的图片质量,默认为95
- 对于PNG格式的图片,这个参数表示为压缩级别从0到9。较高的值意味着更小的尺寸和更长的压缩时间,默认值是3
- 对于PPM,PGM或PBM格式图片,这个参数表示一个二进制格式标志,取值为0或1,默认值是1.
一个完整的读取,显示,保存图片用例:
import numpy as np
import cv2 as cvimg = cv.imread(".././datasheet/len_top.jpg",cv.IMREAD_COLOR )
cv.imshow('lenna',img)
cv.waitKey(0)
cv.destroyAllWindows()
cv.imwrite('save.png',img)
读取到的图片:
Opencv 图片 读取,显示,保存基本操作相关推荐
- opencv之中英文路径图片读取与保存
opencv之中英文路径图片读取与保存 关于如何用opecncv读取和写入图片网上已经有很多教程,这里只是记录一下,用的时候方便查找. 1.opencv读写英文路径图片 使用函数imread()和im ...
- OpenCV基础操作_图片读取和保存
目录 1 图片读取 2 图片保存 1 图片读取 在OpenCV中,加载图片采用imread()函数. 函数详细说明在:Reading and Writing Images and Video - Op ...
- opencv 图片读取和视频读取(一)
环境搭建 一 图片读取 1代码 import cv2 as cv #读取图片 src=cv.imread('./yiner.jpg') #cv.WINDOW_AUTOSIZE 表示自动窗口 cv.na ...
- 【机器学习入门笔记2:OpenCV图片读取和展示】20190203
2019-02-03 by 崔斐然 #思路:1.引入OpenCV 2.调用API 3.程序stopimport cv2 #1.文件的读取 2.封装格式解析 3.数据解码 4.数据加载#[1:文件名 ...
- python实现cv2图片读取显示及图片不显示或显示不全的问题分析
cv2相关知识初步学习 python图片操作之opencv 图片读入 图片显示 图片不能显示的问题 图片只显示一小部分 声明 python图片操作之opencv OpenCV是一个基于BSD许可(开源 ...
- 用c语言实现存储和读取图片文件,C++实现单张图片读取和保存
使用C++实现对单张图片的读取和保存,C语言可以参考,比较简单. #include using namespace std; void main(void) { //保存输入图像文件名和输出图像文件名 ...
- ZYNQ-使用HDMI显示器进行SD卡图片读取显示
学习内容 本文使用带有HDMI接口的显示器,构建图像视频显示的测试工程,利用VDMA进行传输图像视频数据,通过文件系统将SD卡中的照片读取出来然后在显示器显示. 开发环境 vivado 18.3&am ...
- HALCON教程-初步:文件夹遍历,文件筛选,文件名拆分,图片读取及保存
[1]文件夹遍历 list_image_files ( : : ImageDirectory, Extensions, Options : ImageFiles) ImageDirectory: 文件 ...
- 【OpenCV】读取显示图片及Mat类
前言 继Matlab后,OpenCV成了最近这段时间的主攻学习目标.本科有学过一阵OpenCV,也做过项目,但整体学习不够系统,部分知识也遗忘,再加上OpenCV加入了许多新的内容,故重拾Open ...
最新文章
- 「杂谈」白身,初识,不惑,有识,你处于深度学习哪一重境界了
- 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图
- ARM、Intel、MIPS处理器的区别
- Django学习(一)
- C语言库函数大全及应用实例十四
- 五大板块(5)——字符串
- 工作174:数组转换为对象项目案例
- 微信更新对html影响,微信再次大更新 将极大影响用户使用习惯
- linux 下软READ 的使用和参数 以及 实现虚拟READ步骤
- boost::factory实现对象工厂设计模式
- 【医疗影像处理】antspy数据读取与保存
- linux5分钟打印一次的脚本,centos7中crontab定时计划任务5分钟一次命令写法
- 第7章 EL表达式和JSTL
- 等级保护三级和二级有什么区别?
- ABP框架的理解和总结
- JS验证邮箱格式、信用码、税号和注册号
- iOS生成推送push证书,push.p12文件
- There appears to be a gap in the edit log. We expected txid 2289, but got txid 2859.
- 这16道题都能答上来?恭喜你,90%的面试都能通过!
- 跨境电商如何做好引流?做亚马逊速卖通独立站的看过来
热门文章
- 七步从Angular.JS菜鸟到专家(3):数据绑定和AJAX
- 【版本发布】Jeecg-P3 1.0 发布,J2EE微服务框架(插件开发)
- 为什么需要MiniDao? 新持久层 3.5.1 版本发布,让hibernate跟mybatis一样灵活
- 开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm
- 稀疏表示字典的显示【MATLAB实现】
- treeSet中对象的比较
- Python 获取系统信息模块psutil(转载)
- 结合DvaJS来写小程序
- 报表如何同步用户数据集
- 背包形动态规划 fjutoj2375 金明的预算方案