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 条评论
登录 后参与评论

相关文章

来自专栏黄成甲

数据分析之数据处理

数据处理是根据数据分析目的,将收集到的数据,用适当的处理方法进行加工、整理,形成适合数据分析的要求样式,它是数据分析前必不可少的工作,并且在整个数据分析工作量中...

1532
来自专栏瓜大三哥

基于FPGA的非线性滤波器(二)

基于FPGA的非线性滤波器(二) 之并行全比较排序 在进行FPGA映射之前,必须首先确定排序算法。由于在FPGA的图像处理领域,中值滤波的处理窗口不会太大,因此...

2099
来自专栏AI2ML人工智能to机器学习

决策树会有哪些特性?

决策树(Decision Tree)是机器学习中最常见的算法, 因为决策树的结果简单,容易理解, 因此应用超级广泛, 但是机器学习的专家们在设计决策树的时候会考...

1112
来自专栏华章科技

干货:用Python进行数据清洗,这7种方法你一定要掌握

导读:数据清洗是数据分析的必备环节,在进行分析过程中,会有很多不符合分析要求的数据,例如重复、错误、缺失、异常类数据。

2673
来自专栏封碎

当今世界最为经典的十大算法 博客分类: 经典文章转载 算法数据结构网络应用数据挖掘J#

本文转载自July CSDN博客:http://blog.csdn.net/v_JULY_v/archive/2011/03/07/6228235.aspx

1282
来自专栏互联网大杂烩

机器学习面试

线性回归的因变量是连续变量,自变量可以是连续变量,也可以是分类变量。如果只有一个自变量,且只有两类,那这个回归就等同于t检验。如果只有一个自变量,且有三类或更多...

954
来自专栏程序员宝库

码农也要学算法

当“人工智能”、“AlphaGo”、“无人驾驶”、“智能投顾”等词语不断在人们视野中出现的时候,意味着我们正步入一个算法的时代。计算机通过提供给人类每天要面临的...

38910
来自专栏King_3的技术专栏

leetcode-137-Single Number II-第一种解法

3643
来自专栏小樱的经验随笔

BZOJ 1083: [SCOI2005]繁忙的都市【Kruscal最小生成树裸题】

1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2925  Sol...

2634
来自专栏趣学算法

算法之美——算法复杂性

《趣学算法》在线章节:http://www.epubit.com.cn/book/details/4825

1881

扫码关注云+社区