Python3.7
Pythoncharm
第一天:install Opencv+图像的显示
(1)照片的显示
import cv2;
imgpath="C:/Users/vaj/Desktop/1.png";
img = cv2.imread(imgpath,0)#opencv读取的是GBR
cv2.imshow('Img',img)
k=cv2.waitKey(0)
if k==27:
cv2.destroyAllWindows();
elif k==115:
cv2.imread("C:/Users/vaj/Desktop/1.png",img)
cv2.destroyAllWindows("123")
resized_img=cv2.resize(img,(int(img.shape[1]*2),int(img.shape[0]*2)))#
cv2.imshow("123",resized_img)
cv2.waitKey(0)
2.视频的读取和一些读图片处理的 基本操作
vc=cv2.VideoCapture("视频路径")
if vc.isOpened():
open,frame=vc.read()#oepn为1 or 0,frame为每一帧图像
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('result',gray)
if cv2.waitKey(100) & 0xFF==27:
break
vc.release()
cv2.destroyAllWindows()
#颜色通道提取
b,g,r=cv2.split(img)
#重组
img=cv2.merge((b,g,r))
#边界填充
#图像基本操作 img+10 表示每个像素点增加10,超过255自动取余; cv2.add(a,b)自动把两个图像像素进行相加,超过255自动取255
#更改shape
#img_dog=cv2.resize(img_dog,(500,414))#shape值为(414,500)
#res=cv2.resize(img,(0,0),fx=1,fy=3)#横坐标不变,纵坐标扩大三倍
#res=cv2.addWeighted(img_cat,0.4,img_dog,0.6,0)#0.4倍的cat像素+0.6倍dog像素+0(偏置)
(3)图像阈值处理
ret,dst=cv2.threshold(src,thresh,maxval,type)#src为输入图,thresh为阈值,maxval为当像素超过或小于阈值赋予的值,type为二值化类型
(4)图像平滑处理
#均值滤波
#简单地平均卷积操作
blur=cv2.blur(img,(3,3))#3*3的模板
#方框滤波
#可以选择是否归一化
box=cv2.boxFilter(img,-1,(3,3),normalize=True)#为True与均值滤波一毛一样,为False越界取255
#高斯滤波
#把与像素的远近考虑在内,有权重
aussian=cv2.GaussianBlur(img,(5,5),1)
#中值滤波
#把像素从小到大排列,取中间的值作为像素值
mesian=cv2.medianBlur(img,5)#椒盐噪声更适合
(5)图像腐蚀操作
kernel=np.ones((3,3),np.unit8)
dig_erosion=cv2.erode(img,kernel,iterations=1)#iterations为腐蚀次数,此操作为腐蚀
dilge_silate=cv2.dilate(dig_erosion,kernel,iterations=1)#膨胀
#开运算,闭运算
kernel=np.ones((3,3),np.unit8)
opening=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)#先腐蚀在膨胀
closing=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)#先膨胀再腐蚀
#梯度运算,可以得到边界信息
gradient=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
#礼帽=原始-开运算
tophat=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
#黑帽=闭运算-原始
blackhat=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)