热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Opencv图片读取,显示,保存基本操作

Opencv的图片读取,显示,保存是图片操作的基础,实验用的图片来自于lenan:http:www.lenna.org为了使用方便&#

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,该参数主要为要读取到的图片方式,经常用到的主要由以下几个选项


FlagsDescription
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参数列表如下:

 


flagsDescription
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 & params = std::vector() )

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

读取到的图片:


推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
author-avatar
抑制不L挑逗烛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有