python cv2模块imshow_Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()

一、需要工具

本机使用python 2.7.10下调试代码均通过,一下学习需要有一定的代码阅读能力,一下学习只介绍函数方法:

Python 作为一种高效简洁的直译式语言非常适合我们用来解决日常工作的问题。而且它简单易学,初学者几个小时就可以基本入门。再加上Numpy 和matplotlib 这两个翅膀,Python 对数据分析的能力不逊于Matlab。Python 还被称为是胶水语言,有很多软件都提供了Python 接口。尤其是在linux 下,可以使用Python 将不同的软件组成一个工作流,发挥每一个软件自己最大的优势从而完成一个复杂的任务。比如我们可以使用Mysql 存储数据,使用R 分析数据,使用matplotlib 展示数据,使用OpenGL 进行3D 建模,使用Qt 构建漂亮的GUI。而Python 可以将他们联合在一起构建一个强大的工作流。

二、入门小试

1、图像读入:cv2.imread()

使用函数cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片。

• cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,

这是默认参数。

• cv2.IMREAD_GRAYSCALE:以灰度模式读入图像

import cv2

img = cv2.imread('lena.jpg',0)

PS:调用opencv,就算图像的路径是错的,OpenCV 也不会提醒你的,但是当你使用命

令print img时得到的结果是None。

2、显示图像cv2.imshow()

使用函数cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字。

cv2.imshow('image',img)

cv2.waitKey(0)

3、保存图像cv2.imwrite()

cv2.imwrite('lena.png',img)

f45bd4e404a022e1acba5e2de0264a04.png

==========================

使用cv2.imread(),cv2.imshow(),cv2.imwrite()读取、显示和保存图像

一、读入图像

使用函数cv2.imread(filepath,flags)读入一副图片

filepath:要读入图片的完整路径

flags:读入图片的标志

cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道

cv2.IMREAD_GRAYSCALE:读入灰度图片

cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道

import numpy as npimport cv2img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)

二、显示图像

使用函数cv2.imshow(wname,img)显示图像,第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小

cv2.imshow('image',img)

cv2.waitKey(0)

cv2.destroyAllWindows()#dv2.destroyWindow(wname)

cv2.waitKey顾名思义等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。

cv2.destroyAllWindow()销毁所有窗口

cv2.destroyWindow(wname)销毁指定窗口

三、保存图像

使用函数cv2.imwrite(file,img,num)保存一个图像。第一个参数是要保存的文件名,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3.

注意:

cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int

cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。

cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])

cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

四、图片操作

1、使用函数cv2.flip(img,flipcode)翻转图像,flipcode控制翻转效果。

flipcode = 0:沿x轴翻转

flipcode > 0:沿y轴翻转

flipcode < 0:x,y轴同时翻转

imgflip = cv2.flip(img,1)

2、复制图像

imgcopy = img.copy()

3、颜色空间转换

#彩色图像转为灰度图像

img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

灰度图像转为彩色图像img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)

示例

读入一副图像,按’s’键保存后退出,其它任意键则直接退出不保存

import numpy as np

import cv2

img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)

cv2.imshow('image',img)

k = cv2.waitKey(0)

if k == ord('s'):

# wait for 's' key to save and exit

cv2.imwrite('1.png',img)

cv2.destroyAllWindows()else:

cv2.destroyAllWindows()

本文同步分享在 博客“于小勇”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python程序设计课程设计_《Python程序设计》教学大纲.doc

PAGE 理论课程教学大纲 《Python程序设计》教学大纲 课程编号&#xff1a; 总 学 时&#xff1a;64&#xff08;其中&#xff0c;讲课&#xff1a;32&#xff1b;实验&#xff1a;32&#xff09; 学 分&#xff1a;3 实践教学&#xff1a;0周 修读专业&#xff1a;地理信息系统…

2016年将是Java终于拥有窗口函数的那一年!

你没听错。 到目前为止&#xff0c;出色的窗口功能是SQL独有的功能。 即使是复杂的函数式编程语言似乎也缺少这种漂亮的功能&#xff08;如果我记错了&#xff0c;请纠正我&#xff0c;Haskell伙计们&#xff09;。 我们撰写了许多有关窗口函数的博客文章&#xff0c;并在诸如…

LINQ to Entities 不识别方法“System.String ToString() 的解决方法

今天在做一个页面的时候出现了LINQ to Entities 不识别方法“System.String ToString()”的错误&#xff0c;对于源码IQueryable<SelectListItem> items roleInfoServer.Get(r > true).Select(r > new SelectListItem() { Value r.Id.ToString(), Text r.RoleNa…

android 仿京东地址选择_Android 开发:仿美团地址选择

最近做了这个功能&#xff0c;分享一下&#xff0c;用的是百度地图api&#xff0c;和美团外卖的地址选择界面差不多&#xff0c;也就是可以搜索或者滑动地图展示地址列表给用户选择&#xff0c;看下效果图先。文章重点展示地图并定位到“我”的位置 滑动地图获取周边poi(逆地理…

简单回顾在杭州7年

回顾2010年回到浙江杭州&#xff0c;从一开始做.net到后来转到As3网页游戏开发&#xff0c;后又搞起android&#xff0c;那时候就立志想做一款有关于bible的游戏&#xff0c;2010年进入一家创业公司&#xff0c;叫追梦&#xff0c;是追求梦想的开始&#xff0c;在那接触火山和A…

ps还原上一步快捷键_ps还原上一步快捷键_photoshop恢复上一步操作的快捷键是什么...

满意答案simonsinxer推荐于 2017.09.01采纳率&#xff1a;53% 等级&#xff1a;11已帮助&#xff1a;63469人还原/重做前一步操作 【Ctrl】【Z】其他一些快捷键&#xff1a;还原两步以上操作 【Ctrl】【Alt】【Z】重做两步以上操作 【Ctrl】【Shift】【Z】剪切选取的图像或路…

python中排序从小到大_从Python看排序:冒泡排序

冒泡排序在排序算法中是最简单的一种&#xff0c;它通过多次遍历列表&#xff0c;将最大的元素冒泡到列表的头部或尾部。我们通过对四张扑克牌&#xff08;花色相同&#xff09;以从小到大的方式进行排序来演示该算法的工作原理。首先将扑克牌面朝上放在桌上&#xff0c;如下图…

Shell else if mysql_Shell if else语句(详解版)

和其它编程语言类似&#xff0c;Shell 也支持选择结构&#xff0c;并且有两种形式&#xff0c;分别是 if else 语句和 case in 语句。本节我们先介绍 if else 语句&#xff0c;case in 语句将会在《Shell case in》中介绍。如果你已经熟悉了C语言、Java、JavaScript 等其它编程…

【Java并发编程】:使用synchronized获取互斥锁

在并发编程中&#xff0c;多线程同时并发访问的资源叫做临界资源&#xff0c;当多个线程同时访问对象并要求操作相同资源时&#xff0c;分割了原子操作就有可能出现数据的不一致或数据不完整的情况&#xff0c;为避免这种情况的发生&#xff0c;我们会采取同步机制&#xff0c;…

WildFly Swarm –将Java EE应用程序部署为独立的Jar

WildFly Swarm为将Java EE应用程序部署为独立的Jar文件提供了一种简单的解决方案。 这使得部署应用程序特别是REST或Web服务非常容易。 Swarm在这方面与Spring Boot非常相似&#xff0c;因为它可以快速开发Web&#xff08;.War&#xff09;应用程序&#xff0c;然后将其部署为独…

c语言三个数从小到大排序/输出_我的c语言笔记(三)

int表达式这个表达式存在的目的在于将表达式转为整数。比如&#xff1a;float a9999.9999&#xff1b;int b;b(int)(a/1000);就可以得到9啦&#xff0c;别忘了套上固定格式哦&#xff5e;然后我们接下来一起来做一道很重要的题哦&#xff0c;反复练习&#xff0c;可以顺利拿下同…

java虚拟_Java虚拟机(JVM)工作原理

虽然本教程的内容为 x86 处理器的原生汇编语言&#xff0c;但是了解其他机器架构如何工作也是有益的。JVM 是基于堆栈机器的首选示例。JVM 用堆栈实现数据传送、算术运算、比较和分支操作&#xff0c;而不是用寄存器来保存操作数(如同 x86 一样)。数据结构&#xff0c;让它们协…

MVC5 + EF6 + Bootstrap3

MVC5 EF6 Bootstrap3 (16) 客户端验证摘要: 本节介绍MVC客户端验证。阅读全文posted 2015-05-26 07:15 Slark.NET 阅读(6333) | 评论 (21) 编辑MVC5 EF6 Bootstrap3 (15) 应用ModelState和Data Annotation做服务器端数据验证摘要: 本节我们用两种不同的方法ModelState和Da…

java for循环break_Java中break、continue、return在for循环中的使用

这篇文章主要介绍了break、continue、return在for循环中的使用&#xff0c;本文是小编收藏整理的&#xff0c;非常具有参考借鉴价值,需要的朋友可以参考下引言&#xff1a;在使用循环的时候&#xff0c;循环里面带有break、continue、return的时候经常弄混&#xff0c;今天特意…

python 定义字符串变量_python 字符串(1)

字符串 操练一下字符串吧。 >>> print "good good study, day day up" good good study, day day up 在python中&#xff0c;通常用一对双引号、或者单引号来包裹一个字符串。或者说&#xff0c;要定义一个字符串&#xff0c;就用双引号或者单引号。 转义字…

play 拦截器_编写Play 2的模块,第2部分:拦截器

play 拦截器在本教程的第一部分中&#xff0c;我们介绍了创建&#xff0c;发布和调用模块的基本知识。 我们创建的模块并没有真正做很多事情&#xff0c;因此现在是时候使用Play的某些功能来扩展功能了。 1.拦截器 拦截器使您可以拦截对控制器的调用&#xff0c;并增强或阻止其…

java string blob_java String类型转换为Blob类型

展开全部这个是mysql下存取blob字段的一个很简单的类&#xff0c;跟据自己的需要32313133353236313431303231363533e4b893e5b19e31333332623936改改就行了/*** Title: BlobPros.java* Project: test* Description: 把图片存入mysql中的blob字段&#xff0c;并取出* Call Module…

架构之Nginx(负载均衡/反向代理)

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器 &#xff0c;也是一个 IMAP/POP3/SMTP 代理 服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的&#xff0c;第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式…

Neo4j:特定关系与一般关系+属性

为了在Neo4j查询中获得最佳的遍历速度&#xff0c;我们应该使关系类型尽可能具体 。 让我们看一下几周前我在Skillsmatter上发表的“ 建模建议引擎建模 ”演讲中的一个例子。 我需要决定如何为成员和事件之间的“ RSVP”关系建模。 一个人可以对事件表示“是”或“否”&#…

java 获取 网卡名称_Java获取网卡信息详解

InterfaceAddress 类表示一个由名称和分配给此接口的 IP 地址列表组成的网络接口。它用于标识加入多播组的本地接口。 接口通常是按名称(如 "le0")区分的。NetworkParameterDemo.javaimport java.net.InterfaceAddress;import java.net.NetworkInterface;import java…