opencv的基本操作
相关的库
import cv2
import matplotlib.pyplot as plt
import numpy as np
读取图像、显示图像、关闭窗口
img = cv2.imread('../imgs/cat1.jpg')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
图片的一些操作信息
- img.shape = (height,width,ctype)
- 读取灰度图
-
- img = cv2.imread(’…/imgs/cat1.jpg’,cv2.IMREAD_GRAYSCALE)
-
- 保存图片
-
- cv2.imwrite(‘mycat.png’,img)
- img的格式==》 type(img)
读取视频
- cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1
- 如果是视频文件的,可以指定好路径即可
- 视频是由2一帧帧图片组成的
vc = cv2.VideoCapture('../videos/sqdxgg.mp4')
if vc.isOpened():
open,frame = vc.read()
else:
open = False
while open:
ret,frame = vc.read()
if frame is None:
break
if ret == True:
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imshow('reslut',gray)
if cv2.waitKey(10) & 0xFF==27:
break
vc.release()
cv2.destroyAllWidows()

读取图片的部分数据
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(5000)
cv2.destroyAllWindows()
img = cv2.imread('../imgs/cat2.jpg')
cv_show('cat',img)
img = cv2.imread('../imgs/cat2.jpg')
cat = img[0:200,0:200]
cv_show('cat',cat)
原图像

现在图像

颜色通道的提取
- blue,green,red = cv2.split(img)
img = cv2.imread('../imgs/cat2.jpg')
cv_show('img',img)
b,g,r = cv2.split(img)
cv_show('blue',b)
cv_show('green',g)
cv_show('red',r)
img = cv2.merge((b,g,r))

def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(5000)
img = cv2.imread('../imgs/cat2.jpg')
cv_show('img',img)
imgr = img.copy()
imgr[:,:,0]=0
imgr[:,:,1]=0
cv_show('R',imgr)
imgg = img.copy()
imgg[:,:,0]=0
imgg[:,:,2]=0
cv_show('G',imgg)
imgb = img.copy()
imgb[:,:,1]=0
imgb[:,:,2]=0
cv_show('B',imgb)

小记
- 2020.06.30 0:04
- 快高考了,即使已经经历了高考,当年备考的画面仍然在脑海中历历在目,希望每一名学子都能收到目标大学的录取通知书,2020高考加油
- 今天太晚了,今天,如果不学点东西的话,又是一个荒废的一天
边界填充
- BORDER_REPLICATE: 复制法,也就是复制最边缘像素
- BORDER_REFLECT:反射法,对感兴趣的像素在两边进行复制
- BORDER_REFLECT:反射法,也就是以最边缘像素为轴,对称
- BORDER_WRAP:外包装法
- BORDER_CONSTANT:常量法
img = cv2.imread('../imgs/dog1.jpg')
top_size,botton_size,left_size,right_size=(50,50,50,50)
replicate = cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_REFLECT_101)
wrap = cv2.cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_WRAP)
constant = cv2.cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType = cv2.BORDER_CONSTANT,value=0)
plt.figure()
plt.subplot(231)
plt.imshow(img,"gray")
plt.title('OERPLINAL')
plt.subplot(232)
plt.imshow(replicate,"gray")
plt.title('replicate')
plt.subplot(233)
plt.imshow(reflect,"gray")
plt.title('reflect')
plt.subplot(234)
plt.imshow(reflect101,"gray")
plt.title('reflect101')
plt.subplot(235)
plt.imshow(wrap,"gray")
plt.title('wrap')
plt.subplot(236)
plt.imshow(constant,"gray")
plt.title('constant')
plt.show()

数值计算
图像融合
首先直接相加
img_dog = cv2.imread('../imgs/dog1.jpg')
img_cat = cv2.imread('../imgs/cat1.jpg')
print(img_cat+img_dog)

def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(5000)
img_dog = cv2.imread('../imgs/dog1.jpg')
img_cat = cv2.imread('../imgs/cat1.jpg')
img_dog = cv2.resize(img_dog,(500,313))
img_cat_dog = img_dog+img_cat
print(img_cat_dog)
cv_show('dog',img_dog)
cv_show('cat',img_cat)
cv_show('cat_dog',img_cat_dog)

res = cv2.resize(img_dog,(0,0),fx=3,fy=1)
plt.imshow(res)
plt.show()

图像融合(透明度)
img_dog = cv2.imread('../imgs/dog1.jpg')
img_cat = cv2.imread('../imgs/cat1.jpg')
img_dog = cv2.resize(img_dog,(500,313))
res = cv2.addWeighted(img_dog,0.4,img_cat,0.6,0)
plt.imshow(res)
plt.show()
