点赞再看,养成习惯!点赞再看,养成习惯!点赞再看,养成习惯!opencv-python库基础操作
0.安装opencv-python
pip install opencv-python
进行下载并安装
不过在python中导入opencv库的时候需要
"import cv2"来进行导入
下面用一只非常经典的猫咪开始练习使用opencv
1.首先导包
import cv2 #opencv读取的格式是BGR,与一般的RGB不同
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
#这样子就不需要plt.show()
2.读取图像数据
picture_path = "cat.jpg"
img = cv2.imread(picture_path)
看一下shape(可以发现是3通道的)
img.shape
img.size(用来查看图像总的像素有多少个)
3.将图片展示出来
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
其实也可以使用
import matplotlib.pyplot as plt
plt.imshow(img)
来对图片进行展示
但,opencv读取的格式是BGR,与一般的RGB不同,直接读会长这样子:(需要opencv进行RGB的转换)
4.下面用函数进行“图像展示”的封装
def cv_show(name,img):cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()
5.转化为灰度图:
img = cv2.imread(picture_path, cv2.IMREAD_GRAYSCALE)
cv_show("img",img)
6.图像的保存
cv2.imwrite("mycat.png" , img )
7.截取部分图像数据
img = cv2.imread("cat.jpg")
cat = img[0:200, 0:300]
cv_show("cat" , cat)
8. 颜色通道提取
#注意顺序为BGR
b,g,r = cv2.split(img)
9.颜色通道合并
img = cv2.merge((b,g,r))
10.只保留单个颜色通道
#只保留R
cur_img = img.copy()#将B,G通道设置为0
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0cv_show("R" , cur_img)
(纯红看着有点吓人!)
#只保留G
cur_img = img.copy()#将B,R通道设置为0
cur_img[:,:,0] = 0
cur_img[:,:,2] = 0cv_show("g" , cur_img)
#只保留B
cur_img = img.copy()#将R,G通道设置为0
cur_img[:,:,1] = 0
cur_img[:,:,2] = 0cv_show("B" , cur_img)
11.数值计算
因为读取进来之后就直接做np.array格式处理了,所以部分处理方式可以借鉴np.array
img_cat = cv2.imread("cat.jpg")
cv_show("123" , img_cat + 10)
img_cat = cv2.imread("cat.jpg")
img_cat2 = img_cat + 10
img_cat2 + img_cat
(因为我们的像素值范围是[0,255],所以如果相加>255,则会做%255处理)
12. 图像融合
img_cup = cv2.imread("1_51.jpg")
这个图片长这样:
如果直接相加:
img_dog + img_cat
则报错
需要先将某一张图片进行resize处理
img_dog = cv2.resize(img_dog , (640,391))#注意这里是x,y,而shape那边是y,x
img_dog.shape
同时对于这个resize函数,还可以使用缩小放大功能
res = cv2.resize(img_cat , (0,0) , fx = 2, fy = 2)
#这样子就是放大两倍
用addWeighted函数就可以将二者融合在一起!
res1 = cv2.addWeighted(img_cat,0.4,img_dog,0.6,20)
看起来还真是有点魔幻!
基础操作先到这里,接下来会上一些更加高级有用的操作!