opencv python配置_1. OpenCV-Python——环境配置及图像基本操作

一、环境配置

1、在虚拟环境中安装以下库:

opencv-python==3.4.1.15

opencv-contrib-python==3.4.1.15

建议安装3.4.1的版本,3.4.2之后的版本做了专利保护,有的功能不能实现。

虚拟环境的安装以及安装库的问题见PyQt5专栏中的第一节。

2、安装jupyter notebook

pip install jupyter——安装

jupyter notebook——启动

二、图像的基本操作

1、图像的操作

cv2.IMREAD_COLOR:彩色图像

cv2.IMREAD_GRAYSCALE:灰度图像

1 # *******************读取图片**********************开始2 # 导入库3 import cv24 import numpy asnp5 # import matplotlib.pyplot asplt6

7 # 读入图片8 # img = cv2.imread('cat.jpg')9 img = cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE) # 读入灰度图像10

11 # 显示图片12 # cv2.imshow('image',img)13 # cv2.waitKey(10000) # 显示10秒14 # cv2.destroyAllWindows()15

16 # 定义展示图片函数17 def cv_show(name,img):18 cv2.imshow(name,img)19 cv2.waitKey(0)20 cv2.destroyAllWindows()21

22 cv_show('image',img) # 调用函数cv_show23

24 # 打印一些参数25 print(img) # 打印图片26 print(img.shape) # 打印图像的尺寸27 print(type(img)) # 打印的图像的格式28 print(np.size(img)) # 打印图片的大小29 # *******************读取图片**********************结束

2、视频的操作

cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。

如果是视频文件,直接指定好路径即可

1 # *******************读取视频**********************开始2 # 导入库3 import cv24 import numpy asnp5 # import matplotlib.pyplot asplt6

7 vc = cv2.VideoCapture('test.mp4') # 读取视频8

9 # 检查是否打开正确10 ifvc.isOpened():11 open, frame =vc.read()12 else:13 open =False14

15 whileopen:16 ret, frame =vc.read()17 if frame isNone:18 break

19 if ret ==True:20 gray =cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)21 cv2.imshow('result', gray)22 if cv2.waitKey(10) & 0xFF == 27: # 每一帧的等待时间以及关闭23 break

24 vc.release()25 cv2.destroyAllWindows()26

27 # *******************读取视频**********************结束

3、截取部分图像+颜色通道获取

1 # *******************截取部分图像+颜色通道获取**********************开始2 # 导入库3 import cv24 # import numpy asnp5 # import matplotlib.pyplot asplt6

7 img=cv2.imread('cat.jpg')8 cat=img[0:200,0:200] # 截取部分图像数据9

10 # 定义展示图片函数11 def cv_show(name,img):12 cv2.imshow(name,img)13 cv2.waitKey(0)14 cv2.destroyAllWindows()15

16 # cv_show('cat',cat)17

18 b,g,r=cv2.split(img) # 获取图像的r,b,g通道数值19 print(b)20 print(b.shape)21

22 img=cv2.merge((b,g,r)) # r,g,b通道合成23 print(img.shape)24

25 # 只保留R26 cur_img =img.copy()27 cur_img[:,:,0] = 0# 除R通道其余都设置为028 cur_img[:,:,1] = 0

29 cv_show('R',cur_img) # 只保留R通道30

31 # 只保留G32 cur_img =img.copy()33 cur_img[:,:,0] = 0

34 cur_img[:,:,2] = 0

35 cv_show('G',cur_img) # 只保留G通道36

37 # 只保留B38 cur_img =img.copy()39 cur_img[:,:,1] = 0

40 cur_img[:,:,2] = 0

41 cv_show('B',cur_img) # 只保留B通道42 # *******************截取部分图像+颜色通道获取**********************结束

4、边界填充

BORDER_REPLICATE:复制法,也就是复制最边缘像素。

BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb

BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba

BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg

BORDER_CONSTANT:常量法,常数值填充。

1 #*******************边界填充**********************开始

2 importcv23 importmatplotlib.pyplot as plt4

5 img = cv2.imread('cat.jpg')6

7 #设置参数

8 top_size,bottom_size,left_size,right_size = (50,50,50,50)9

10

11 replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)12 reflect =cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT)13 reflect101 =cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101)14 wrap =cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)15 constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0)16

17 plt.subplot(231), plt.imshow(img, 'gray'), plt.title('ORIGINAL')18 plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('REPLICATE')19 plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT')20 plt.subplot(234), plt.imshow(reflect101, 'gray'), plt.title('REFLECT_101')21 plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP')22 plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('CONSTANT')23

24 plt.show()25 #*******************边界填充**********************结束

5、数值计算

1 #*******************数值计算**********************开始

2 importcv23

4 img_cat=cv2.imread('cat.jpg')5

6 print(img_cat[:5,:,0]) #原图 打印前五行

7

8 img_cat2 = img_cat+10

9 print(img_cat2[:5,:,0]) #处理后 打印前五行

10

11 #直接相加==%256 求余数

12 print((img_cat+img_cat2)[:5,:,0]) #相加后 打印前五行

13

14 #add函数

15 print(cv2.add(img_cat,img_cat2)[:5,:,0]) #add后 打印前五行

16 #*******************数值计算**********************结束

6、图像融合

R = aX1 + aX2 + b

1 #*******************图像融合**********************开始

2 importcv23

4 img_cat=cv2.imread('cat.jpg')5 img_dog=cv2.imread('dog.jpg')6

7 #查看当前图像的各自参数

8 print(img_cat.shape)9 print(img_dog.shape)10

11 #修改图像的大小 保持一致

12 img_dog = cv2.resize(img_dog,(500,414))13 print(img_dog.shape)14

15 #加权融合

16 res = cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0)17 print(res.shape)18

19 #显示图像

20 #定义展示图片函数

21 defcv_show(name,img):22 cv2.imshow(name,img)23 cv2.waitKey(0)24 cv2.destroyAllWindows()25

26 cv_show('image',res)27

28 #比例修改图像大小

29 img_cat = cv2.resize(img_cat,(0,0),fx=3,fy=1)30 cv_show('cat_image',img_cat)31 #*******************图像融合**********************结束

7、图像灰度转换

cv2.COLOR_BGR2GRAY

1 #*******************图像的灰度转换**********************开始

2 import cv2 #opencv读取的格式是BGR

3 #import numpy as np

4 #import matplotlib.pyplot as plt # Matplotlib是RGB

5

6 img=cv2.imread('cat.jpg')7 img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #灰度转换

8 print(img_gray.shape)9 #*******************图像的灰度转换**********************结束

你可能感兴趣的:(opencv,python配置)