Python-OpenCV(3)
来源:互联网 发布:数据库中储存的是什么 编辑:程序博客网 时间:2024/06/04 00:24
上篇博客,写了个比较有意思的玩意,接下来几篇会写写基本的图像处理
首先我们要知道的是,cv2.imread()
,读取的图像是个numpy
矩阵
In [1]: import cv2In [2]: import numpy as npIn [3]: img = cv2.imread('/home/gavinzhou/实验室/ForBlogImage/images/0.jpg', cv2.IMREAD_GRAYSCALE)In [4]: type(img)Out[4]: numpy.ndarrayIn [5]:
所有对如何取出图像中的点,如何对图像进行resize,如何‘扩充’图像之类的,其实就是对数组的操作,这个我就不准备说了,大家可以看我的numpy基础教程,相信大家都可以看懂的
比如,我举个例子:
Question:
如何获得一副彩色(三通道)图像的R、G、B分量
Answer:
(1) 使用cv函数,cv2.split()
(2) numpy数组观点,R、G、B分量就是此三维矩阵的第三、第二、第一维的分量值嘛(OpenCV读图是按照BGR读取的)
即:B = img[:, :, 0],G = img[:, :, 1],R = img[:, :, 2]
代码:
In [7]: img = cv2.imread('/home/gavinzhou/实验室/ForBlogImage/images/0.jpg', cv2.IMREAD_COLOR)In [8]: B = img[:, :, 0]In [9]: B.shapeOut[9]: (220, 298)In [10]: cv2.imshow('B', B)(python:23185): Gtk-WARNING **: gtk_disable_setlocale() must be called before gtk_init()In [11]: G = img[:, :, 1]In [11]: R = img[:, :, 2]
结果:
相信大家已经明白我的意思了,图像的很多操作其实就是对矩阵的操作,想明白这个很多问题往往我们可以不借助cv函数,直接高效的对矩阵进行操作
图像上的算数运算
其实思想和我上面说的类似,算数运算其实就是矩阵的运算嘛
还是以一个例子说明:
Question:
实现图像的融合效果Answer:
其实很简单,就是矩阵的加权相加就可以,公式:
img = a*img1+(1-a)*img2
或者:
cv2.addWeighted()
代码:
In [66]: img2=cv2.imread('/home/gavinzhou/实验室/ForBlogImage/images/3.jpg',cv2.IMREAD_COLOR)In [67]: img1=cv2.imread('/home/gavinzhou/实验室/ForBlogImage/images/0.jpg',cv2.IMREAD_COLOR)In [68]: print img1.shape,img2.shape(220, 298, 3) (220, 293, 3)In [69]: img3=cv2.resize(img1, (293,220)) # 必须大小一样才可以进行叠加,不然数组越界嘛In [70]: print img3.shape,img2.shape(220, 293, 3) (220, 293, 3)In [71]: img4=cv2.addWeighted(img3,0.7,img2,0.3,0) # 等价于0.7*img3+0.3*img2In [72]: imshow(img4)Out[72]: <matplotlib.image.AxesImage at 0x7fb6bf1aaa90>In [73]: img4.shapeOut[73]: (220, 293, 3)
结果:
0 0
- Python-OpenCV教程-3
- Python-OpenCV(3)
- OpenCV Python教程3
- OpenCV-Python-Tutorial[3]
- OpenCV-Python learning---3
- opencv python 3 数值操作
- .NET + OpenCV & Python + OpenCV
- python-opencv
- python opencv
- python+opencv
- OpenCV+ Python
- OPENCV+PYTHON
- python-opencv
- opencv python
- python opencv
- python opencv(3)获取图像大小
- python opencv 入门 绘图函数 (3)
- python opencv cv2 基础操作3 CascadeClassifier
- 将一个文件夹下的所有文件后缀改成.txt
- Struts和SpringMVC的区别
- 第一篇CSDN博客
- 广告的效果
- 下拉刷新控件
- Python-OpenCV(3)
- 括号匹配判断
- 关于数的溢出
- Android学习之两款下拉刷新库分享
- [leetcode]Two Sum
- lintcode: Implement Queue by Two Stacks
- Android 自定义View
- android接入即时IM
- 编程技巧