OpenCV3计算机视觉Python语言实现笔记(一)
Python3下OpenCV的安装 :http://blog.csdn.net/lwplwf/article/details/61616493
1. 读/写图像文件
OpenCV的imread()函数和imwrite()函数能支持各种静态图像文件格式。不同系统支持的文件格式不一样,但都支持BMP格式,通常还应该支持PNG、JPEG和TIFF格式。
无论哪种格式,每个像素都会有一个值,但不同格式表示像素的方式有所不同。如:
import cv2
import numpy as np img = np.zeros((3, 3), dtype = np.uint8) # 通过二维NumPy数组来简单创建一个黑色的正方形图像
print(img) # 在控制台打印该图像
print(img.shape) # 通过shape属性来查看图像的结构,返回行和列,如果有一个以上的通道,还会返回通道数
img = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) # 利用cv2.cvtColor函数将该图像转换成BGR格式
print(img)
print(img.shape)
cv2.namedWindow("Image") # 显示该图像
cv2.imshow("Image", img)
cv2.waitKey (0)
结果为:
[[0 0 0]
[0 0 0]
[0 0 0]]
# 每个像素都由一个8位整数来表示,即每个像素值的范围是0~255
(3, 3)
[[[0 0 0]
[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]
[0 0 0]]]
# 现在每个像素都由一个三元数组表示,并且每个整型向量分别表示一个B,G和R通道。其他色彩空间(如HSV)也以同样的方式来表示像素,只是取值范围和通道数目不同(例如,HSV色彩空间的色度值范围为0~180)
(3, 3, 3)
# 此时每个像素有3通道

可读取一种格式的图像文件,然后将其保存为另一种格式。如:
import cv2
image = cv2.imread('flower.jpg') # 将‘flower.jpg’的图片与.py文件放在同一目录下,或者使用绝对路径
cv2.imwrite('flower.png',image)
程序运行后,可看到文件夹中多了'flower.png'的图片

在默认情况下,即使图像文件为灰度格式,imread()函数也会返回BGR格式的图像,BGR与RGB表示的色彩空间相同,但字节顺序相反。
下面列出的选项可作为imread()函数的参数:
IMREAD_ANYCOLOR = 4
IMREAD_ANYDEPTH = 2
IMREAD_COLOR = 1
IMREAD_GARYSCALE = 0
IMREAD_LOAD_GDAL = 8
IMREAD_UNCHANGED = -1
cv2.imread(‘图像名称’,’可选参数’)
可选参数决定读入图像的模式:
0:读入的为灰度图像(即使图像为彩色的)
1:读入的图像为彩色的(默认);
如下面的例子将加载的PNG文件作为灰度图像(在这个过程中会丢失所有的颜色信息),然后又将其保存为灰度的PNG图像。
import cv2
import numpy as np garyImage = cv2.imread('flower.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imwrite('flower.png',garyImage)
程序运行后,文件夹中出现了灰度图像

无论采用哪种模式,imread()函数会删除所有alpha通道的信息(透明度)。imwrite()函数要求图像为BGR或灰度格式,并且每个通道要有一定的位(bit),输出格式要支持这些通道。例如,bmp格式要求每个通道有8位,而PNG允许每个通道有8位或16位
储存图像函数:cv2.imwrite(‘保存的图像名’,图像,‘参数’)
正常的图像储存使用就是cv2.imwrite(‘保存的图像名’,图像),后面一个参数默认,保存的图像名还得带类型,比如jpg,bmp等等,OpenCV目前支持读取bmp、jpg、png、tiff等常用格式,第三个参数较复杂,还得分是jpg、bmp等等图像的类型不同而不同,其实就是决定了图像储存大小,清晰度的,默认的就很好
此外,还有一种显示图像的方式。
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('flower.jpg',0);#打开为灰度图像
plt.imshow(img, 'gray') #必须规定为显示的为什么图像
# plt.xticks([]),plt.yticks([]) #隐藏坐标线
plt.show() #显示出来,不要也可以,但是一般都要了

OpenCV3计算机视觉Python语言实现笔记(一)的更多相关文章
- OpenCV3计算机视觉Python语言实现笔记(四)
1. Canny边缘检测 OpenCV提供了Canny函数来识别边缘.Canny边缘检测算法有5个步骤:使用高斯滤波器对图像进行去噪.计算梯度.在边缘上使用非最大抑制(NMS).在检测到的边缘上使用双 ...
- OpenCV3计算机视觉Python语言实现笔记(三)
一.使用OpenCV处理图像 1.不同颜色空间的转换 OpenCV中有数百种关于在不同色彩空间之间转换的方法.当前,在计算机视觉中有三种常用的色彩空间:灰度.BGR以及HSV(Hue, Saturat ...
- OpenCV3计算机视觉Python语言实现笔记(二)
1. 图像与原始字节之间的转换 从概念上讲,一个字节能表示0到255的整数.目前,对于多有的实时图像应用而言,虽然有其他的表示形式,但一个像素通常由每个通道的一个字节表示. 一个OpenCV图像是.a ...
- OpenCV3计算机视觉Python语言实现笔记(五)
图像的几何变换主要包括:平移.扩大与缩小.旋转.仿射.透视等等.图像变换是建立在矩阵运算基础上的,通过矩阵运算可以很快的找到对应关系. 1. 图像的平移 图像的平移,沿着x方向tx距离,y方向ty距离 ...
- 《OpenCV3 计算机视觉--Python语言实现 第二版》源代码及纠错
1.源代码下载地址 <OpenCV3 计算机视觉--Python语言实现 第二版>由我们翻译,英文书名<Learning OpenCV3 Computer Vision with P ...
- 学习CV:《OpenCV 3计算机视觉Python语言实现第2版》中文PDF+英文PDF+代码
理解与计算机视觉相关的算法.模型以及OpenCV 3 API背后的基本概念,有助于开发现实世界中的各种应用程序(比如:安全和监视领域的工具). OpenCV 3是一种先进的计算机视觉库,可以用于各种图 ...
- python语言学习笔记整理
什么是程序? 程序等于数据结构加算法,那么数据结构是一个静态的东西,算法是一个动态的东西,我们用一个新的语言编写这个程序,我们要考虑到语言也主要由数据结构和算法相关的东西,或静态或动态的东西来构成,所 ...
- OpenCV3计算机视觉+python(三)
使用OpenCV3处理图像 下面要介绍的内容都与图像处理有关,这时需要修改图像,比如要使用具有艺术性的滤镜.外插(extrapolate)某些部分.分割.粘贴或其他需要的操作. 不同色彩空间的转换 O ...
- OpenCV3计算机视觉+Python(五)
人脸检测和识别 本章将介绍Haar级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配.本章将考虑如何将多个Haar级联分类器构成一个层次结构,即一个分类器能识别整体区域(如人 ...
随机推荐
- jQ效果:jQuery之插件开发短信发送倒计时功能
实现的主要功能如下: 1.点击按钮的时候,可以进行倒计时,倒计时自定义. 2.当接收短信失败后,倒计时停止,可点击重新发送短信. 3.点击的元素支持一般标签和input标签. html代码: < ...
- JS获取元素的宽高以及offsetTop,offsetLeft等的属性值
基本介绍 $(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj ...
- 从发布订阅模式到redux(一)
最近在学习的过程中,学习了一些关于redux的一些知识,学之前用redux,虽然会用但是实现的原理就不是特别清楚,天天沉迷于搬砖 总是这木搬砖也不是个事啊,就准备开始深入了解一些原理性的东西 首先在看 ...
- Dynamics 365 Online-试用环境申请地址
https://trials.dynamics.com/Dynamics365/Signup/sales 需要用企业邮箱
- Activity切换的时候生命周期的变化
之前在做笔试题的时候遇到一个问题:Activity A切换到ActivityB时,A和B的生命周期变化. 事实上,它们的生命周期变化是这样的: 1.A的onPause()方法被执行. 2.B的onCr ...
- Android为TV端助力 SharedPreferences 轻量级存储!
首先在当前进程也就是当前的项目里面进行存储 SharedPreferences.Editor editor = mContext.getSharedPreferences("tvplay&q ...
- Android为TV端助力 遥控器的映射
第一编写kl文件时先在盒子上输入getevent -v查看设备信息,设备信息里有vendor.product.version, 假如分别是xxxx,yyyy,zzzz,那么你的文件名就要命名为Vend ...
- Space Time Varying Color Palette
PDF Space Time Varying Color Palettes from Bo Zhou
- Glide开源库的使用
关于Glide Glide是一款快速高效的Android图像加载库,注重于平滑的滚动.Glide提供了易用的API,高性能.可扩展的图片解码管道(decode pipeline),以及自动的资源池技术 ...
- 调用Android自带浏览器打开网页
转载请注明出处: http://blog.csdn.net/lowprofile_coding/article/details/77928608 在Android中可以调用自带的浏览器,或者指定一个浏 ...