【OpenCv-Python】Getting Started with Images
1.1读入图像
使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供一个完整的路径,第二个参数是要告诉函数应该如何读取这幅图片。
- cv2.IMREAD_COLOR:读取一副彩色图像。图像的透明度会被忽略,这是默认参数。
- cv2.IMREAD_GRAYSCALE:以灰度模式读取图像
- cv2.IMREAD_UNCHANGED:读入一副图像,并且包括图像的alpha通道
# -*- coding: utf-8 -*-
import numpy as np
import cv2
#加载一副灰色图片
img = cv2.imread('love.jpg',0)
1.2显示图像
使用函数 cv.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是图像窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字
cv2.imshow('image',img)
cv2.waitKey(0) #如果没有这行代码,图像窗口则会无响应
cv2.destroyAllWindows()
cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒内,如果按下任意键,这个函数会返回按键的ASCII码值,程序将会继续运行。如果没有键盘输入,返回值为-1,如果没有
cv2.destroyAllWindows() 可以轻易销毁(释放资源)任何我们建立的窗口。如果你想销毁掉特定的窗口可以使用 cv.destroyWindow, 将你想删除的窗口名称作为参数传递
1.3保存图像
使用函数 cv.imwrite() 来保存一个图片。 第一个参数为文件名称,第二个参数是你想要保存的图片变量。
cv2.imwrite('gLove.png',img)
1.4总结
下面的程序会以灰度模式读取一副图片并且显示出来,如果你按‘s’ 键就会保存后退出,或者按下‘esc’键仅退出则不保存灰色图片。
import numpy as np
import cv2
#对原文档中代码做了部分修改
img = cv2.imread('love.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0) & 0xFF
if k == 27:
cv2.destroyAllWindows()
elif k == 83 or k == 115:
cv2.imwrite('gLoveW.png',img)
cv2.destroyAllWindows()
else:
print('输入错误,请按 ESC 或者 S')
cv2.destroyAllWindows()
警告
如果你用的是64位的系统,你需要将 k = cv2.waitKey(0) 这里改成 k = cv2.waitKey(0) & 0xFF
使用 Matplotlib
Matplotlib 是一个 Python 的一个绘图库,它给使用者提供了各种各样的绘图方法(函数)。你将要在接下来的文章中看到它们。在这里,你将学习如何用Matplotlib 显示图像。你使用Matplotlib 能够缩放图像,保存图像等。
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('love.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) #在x轴 y轴上隐藏刻度值
plt.show()
参阅
在Matplotlib 中有大量的绘图选项。更多细节请参考Matplotlib 文档。另外,我们会陆续了解一些。
警告
通过 OpenCv 加载彩色图像时是使用的 BGR 模式。但是Matplotlib 显示图像使用的 RGB 模式。 所以如果图像是用 OpenCv 读取的,
那么彩色图像使用Matplotlib不会正确的显示.详情请参阅练习。
附加资源
1.Matplotlib Plotting Styles and Features
练习
1.当你尝试使用 OpenCv 加载一个彩色图像并且使用 Matplotlib 显示它时会产生一些问题。阅读
这些讨论内容,并且去尝试理解它。
【OpenCv-Python】Getting Started with Images的更多相关文章
- 【leetcode❤python】Sum Of Two Number
#-*- coding: UTF-8 -*- #既然不能使用加法和减法,那么就用位操作.下面以计算5+4的例子说明如何用位操作实现加法:#1. 用二进制表示两个加数,a=5=0101,b=4=0100 ...
- 【OpenCV开发】使用OpenCV的OpenCL(ocl)模块
参加OpenCV的OpenCL模块(以下称OCL)移植工作已经有2个月了.这里我说移植而不是开发,是因为大部分OCL模块的函数都是从已经很成熟的GPU模块移植过来的.于是目前阶段OCL模块所支持的函数 ...
- 【Beginning Python】抽象(未完)
[懒惰即是美德] 抽象意味着良好的可读性:说明你在努力做什么,而不是给出你正在如何做的细节. [抽象和结构] 程序应该是非常抽象的,就像“下载网页.计算频率.打印每个单词的频率”一样易懂.翻译成程序就 ...
- 【opencv基础】测量运行时间的函数getTickCount/getCPUTickCount/getTickFrequency
函数的计算结果类型是double,单位是秒. 要使用更精确的计时,就需要使用getCPUTickCount(),不过现代计算机CPU的频率会随着负载而变化所以没大有必要使用该函数,可以参看函数的介绍[ ...
- 【Mac + Python】苹果系统之安装Python3.6.x环境
一.打开终端 输入:uname -a ,查看电脑系统位数. 输入:python,查看mac系统python版本. 二.为了以后切换版本方便,安装pyenv进行版本切换以及升级. 参考文章:<M ...
- 雕刻效果的实现【OpenCV+QT】
雕刻能够区分为凸雕和凹雕. 凸雕基右下角的点减去左上角的点. 凹雕是左上角的点减去右下角的点. [效果图] 由于进行了缩放.效果看起来差一些.
- 【leetcode❤python】 1. Two Sum
#-*- coding: UTF-8 -*- #AC源码[意外惊喜,还以为会超时]class Solution(object): def twoSum(self, nums, target): ...
- 【leetcode❤python】 58. Length of Last Word
#-*- coding: UTF-8 -*-#利用strip函数去掉字符串去除空格(其实是去除两边[左边和右边]空格)#利用split分离字符串成列表class Solution(object): ...
- 【leetcode❤python】 8. String to Integer (atoi)
#-*- coding: UTF-8 -*-#需要考虑多种情况#以下几种是可以返回的数值#1.以0开头的字符串,如01201215#2.以正负号开头的字符串,如'+121215':'-1215489' ...
- 【虫师Python】第二讲:元素定位
一.六种定位方式 1.id 2.name 3.class name 4.tag name:定位标签 5.link text:定位一个链接,如果是中文,需要在代码文最前面加一句I话|:#coding=u ...
随机推荐
- MJServer部署
工具: 1.jdk-8u60-macosx-x64.dmg 2.MjServer.zip 3.eclipse-jee-kepler-SR2-macosx-cocoa-x86_64.tar.gz 4.a ...
- rare alleles
I.4 Where the rare alleles are found p是基因A的频率,N是个体数目(也就是基因型个数,所以基因个数是2n,所以全部个体的基因A的个数是2np),p方是PAA,np ...
- 【线段树】Interval GCD
题目描述 给定一个长度为N的数列A,以及M条指令 (N≤5*10^5, M<=10^5),每条指令可能是以下两种之一: "C l r d",表示把 A[l],A[l+1],- ...
- Perl: print @globbing."\n"; 和 print @globbing; 不一样,一个已经转换为数组元素个数了
48 print @globbing."\n"; 输出: 3
- 没有更好的,五种操作系统助力研发,IMX6开发板做得到
核心板参数 尺寸 51mm*61mm 四核商业级-2G NXP 四核 i.MX6Q,主频 1 GHz 内存:2GB DDR3:存储:16GB EMMC:SATA接口:支持 双核商业级-1G NXP 双 ...
- GitHub 代码仓库提示:“We found a potential security vulnerability in one of your dependencies”
github代码仓库提示:“We found a potential security vulnerability in one of your dependencies” 问题描述: Github上 ...
- 源码分析SpringBoot启动
遇到一个问题,需要从yml文件中读取数据初始化到static的类中.搜索需要实现ApplicationRunner,并在其实现类中把值读出来再set进去.于是乎就想探究一下SpringBoot启动中都 ...
- Windows_Management_Instrumentation
WMI是管理系统中的核心 使用本工具的前提是:系统的服务列表中,Windows_Management_Instrumentation(winmgmts)这个服务处于运行状态.如果处于关闭状态,请在运行 ...
- [LC] 429. N-ary Tree Level Order Traversal
Given an n-ary tree, return the level order traversal of its nodes' values. Nary-Tree input serializ ...
- 微软要冷落windows是天方夜谭还是势在必行
自从90年代开始,微软就统治着PC桌面市场,真正意义上地改变了世界,在很长一段时间内,Windows就和阳光.空气.水.电能一样,成为生活必需品,无处不在,又让人感觉不到其存在,正因如此,微软的市值于 ...