Python-OpenCV(3)

上篇博客,写了个比较有意思的玩意,接下来几篇会写写基本的图像处理

首先我们要知道的是,cv2.imread(),读取的图像是个numpy矩阵

In [1]: import cv2

In [2]: import numpy as np

In [3]: img = cv2.imread('/home/gavinzhou/实验室/ForBlogImage/images/0.jpg', cv2.IMREAD_GRAYSCALE)

In [4]: type(img)
Out[4]: numpy.ndarray

In [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.shape
Out[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*img2

In [72]: imshow(img4)
Out[72]: <matplotlib.image.AxesImage at 0x7fb6bf1aaa90>

In [73]: img4.shape
Out[73]: (220, 293, 3)

结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

R语言多元统计包简介:各种假设检验 统计方法 聚类分析 数据处理

基本的R包已经实现了传统多元统计的很多功能,然而CRNA的许多其它包提供了更深入的多元统计方法,下面做个简要的综述。多元统计的特殊应用在CRNA的其它任务列表(...

3454
来自专栏CDA数据分析师

谷歌教你学 AI-第五讲模型可视化

Google Cloud发布了名为"AI Adventures"的系列视频,用简单易懂的语言让初学者了解机器学习的方方面面。今天让我们来看到第五讲模型可视化。 ...

1897
来自专栏1039778的专栏

Python 数据分析学习笔记

一、基本语法 [1507772432114_7239_1507772402948.jpg] 资料地址:http://www.icoolxue.com/albu...

1886
来自专栏懒人开发

(2)James Stewart Calculus 5th Edition:Limits and Derivatives

672
来自专栏人工智能

漫谈神经语言模型之中文输入法

漫谈神经语言模型之中文输入法 Speech Valley是原先的github项目Automatic Speech Recognition的正式库名称,之所以取名...

24310
来自专栏水击三千

经纬度转换-----度分秒以及经纬度和米

经纬度互换 度(DDD):E 108.90593度    N 34.21630度     如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经...

2867
来自专栏ascii0x03的安全笔记

利用Python sklearn的SVM对AT&T人脸数据进行人脸识别

要求:使用10-fold交叉验证方法实现SVM的对人脸库识别,列出不同核函数参数对识别结果的影响,要求画对比曲线。 使用Python完成,主要参考文献【4】...

4058
来自专栏人工智能

通过JS库Encog实现JavaScript机器学习和神经学网络

在本文中,你会对如何使用 JavaScript 实现机器学习这个话题有一些基本的了解。

1.2K10
来自专栏1039778的专栏

Python 数据分析学习笔记

一、基本语法 [1507772432114_7239_1507772402948.jpg] 资料地址:http://www.icoolxue.com/album...

4849
来自专栏前端儿

笨小熊

笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!  这种方法的具体描述如下...

412

扫码关注云+社区