opencv-python库基础操作(一)

点赞再看,养成习惯!
点赞再看,养成习惯!
点赞再看,养成习惯!
opencv-python库基础操作
0.安装opencv-python
pip install opencv-python
进行下载并安装
不过在python中导入opencv库的时候需要
"import cv2"来进行导入

下面用一只非常经典的猫咪开始练习使用opencv
opencv-python库基础操作(一)_第1张图片
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的转换)
opencv-python库基础操作(一)_第2张图片

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)

opencv-python库基础操作(一)_第3张图片
6.图像的保存

cv2.imwrite("mycat.png" , img )

7.截取部分图像数据

img = cv2.imread("cat.jpg")
cat = img[0:200, 0:300]
cv_show("cat" , cat)

opencv-python库基础操作(一)_第4张图片
8. 颜色通道提取

#注意顺序为BGR
b,g,r = cv2.split(img)

opencv-python库基础操作(一)_第5张图片
9.颜色通道合并

img = cv2.merge((b,g,r))

10.只保留单个颜色通道

#只保留R
cur_img = img.copy()

#将B,G通道设置为0
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0

cv_show("R" , cur_img)

opencv-python库基础操作(一)_第6张图片
(纯红看着有点吓人!)

#只保留G
cur_img = img.copy()

#将B,R通道设置为0
cur_img[:,:,0] = 0
cur_img[:,:,2] = 0

cv_show("g" , cur_img)

opencv-python库基础操作(一)_第7张图片

#只保留B
cur_img = img.copy()

#将R,G通道设置为0
cur_img[:,:,1] = 0
cur_img[:,:,2] = 0

cv_show("B" , cur_img)

opencv-python库基础操作(一)_第8张图片
11.数值计算
因为读取进来之后就直接做np.array格式处理了,所以部分处理方式可以借鉴np.array

img_cat = cv2.imread("cat.jpg")
cv_show("123" , img_cat + 10)

opencv-python库基础操作(一)_第9张图片

img_cat = cv2.imread("cat.jpg")
img_cat2 = img_cat + 10
img_cat2 + img_cat

(因为我们的像素值范围是[0,255],所以如果相加>255,则会做%255处理)
opencv-python库基础操作(一)_第10张图片
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)

看起来还真是有点魔幻!
opencv-python库基础操作(一)_第11张图片

基础操作先到这里,接下来会上一些更加高级有用的操作!

你可能感兴趣的:(opencv,opencv,计算机视觉,python)