openCV学习笔记(Python版本)
目录
1.图像模糊处理
import cv2 as cv;
def blur_demo():
src=cv.imread("F:/images/zwj.jpg")
cv.imshow("test",src)
dst=cv.blur(src, (15,15))
cv.imshow("blur",dst);
if __name__=="__main__":
blur_demo()
cv.waitKey(0);
cv.destroyWindow()
2.均值和高斯模糊
# -*- coding: utf-8 -*-
"""
Created on Sat Oct 24 19:12:29 2020
@author: zwj
@email:2377389590@qq.com
"""
import cv2 as cv
import numpy as np
def blur_demo():
src=cv.imread("F:/images/zwj.jpg")
cv.imshow("input",src)
dst=cv.blur(src,(15,15))
cv.imshow("blur",dst);
def gaussian_blur_demo():
src=cv.imread("F:/images/zwj.jpg")
cv.imshow("input", src)
dst=cv.GaussianBlur(src, (5,5), 0)
cv.imshow("gaussian_blur", dst)
if __name__=="__main__":
blur_demo()
gaussian_blur_demo()
cv.waitKey(0)
cv.destroyAllWindows()
3、统计滤波(最大、最小、中值滤波)
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 25 00:09:04 2020
@author: 猪猪侠
@email:2377389590@qq.com
"""
import cv2 as cv
import tensorflow as tf
import numpy as np
def statistics_filters():
src=cv.imread("F:/images/jy.png")
cv.imshow("input",src)
kernel=np.ones((3,3),np.uint8)
dst=cv.erode(src,kernel)
cv.imshow("minmum",dst)
dst2=cv.dilate(src, kernel)
cv.imshow("maxmum", dst2)
dst1=cv.medianBlur(src, 5)
cv.imshow("medi",dst1)
if __name__=="__main__":
statistics_filters()
cv.waitKey(0)
cv.destroyAllWindows()
4、椒盐噪声and 高斯噪声
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 25 00:09:04 2020
@author: 猪猪侠
@email:2377389590@qq.com
"""
import cv2 as cv
import numpy as np
def add_noise():
src=cv.imread("F:/images/zwj.jpg")
cv.imshow("input",src)
copy=np.copy(src)
nums=50000
h,w=src.shape[:2]
rows=np.random.randint(0,h,(nums),dtype=np.int)
cols=np.random.randint(0,w,(nums),dtype=np.int)
for i in range(nums):
if i%2==1:
src[rows[i],cols[i]]=(255,255,255)
else:
src[rows[i],cols[i]]=(0,0,0)
cv.imshow("salt ans papper image", src)
gnoise=np.zeros(src.shape,src.dtype)
m=(15,15,15)
s=(30,30,30)
cv.randn(gnoise,m, s)
cv.imshow("gnoise", gnoise)
dst=cv.add(copy,gnoise)
cv.imshow("gaussian noise", dst)
if __name__=="__main__":
#blur_demo()
#gaussian_blur_demo()
# statistics_filters()
add_noise()
cv.waitKey(0)
cv.destroyAllWindows()
5、素描图像
# -*- coding: utf-8 -*-
"""
Created on Mon Oct 26 00:33:30 2020
@author: 猪猪侠
@email:2377389590@qq.com
"""
import cv2 as cv
import numpy as np
src=cv.imread("F:/images/zwj.jpg")
cv.imshow("input",src)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
ksize=15
sigma=10
inv = 255 - gray
blur = cv.GaussianBlur(inv, ksize=(ksize, ksize), sigmaX=sigma, sigmaY=sigma)
res = cv.divide(gray, 255 - blur, scale=255)
cv.imshow("sumiao", res)
mask=np.ones_like(src,np.uint8)
# mask[:,mask.shape[1]//2:,:]=0
mask[:,:mask.shape[1]//2:,:]=0
#mask[mask.shape[1]//2:,:,:]=0
#mask[:mask.shape[1]//2,:,:]=0
res = np.expand_dims(res,axis = 2)
img=res*mask+src*(1-mask)
cv.imshow("mask",img)
cv.waitKey(0)
cv.destroyAllWindows()
6、绘制素描视频
import cv2 as cv
import numpy as np
cap = cv.VideoCapture('D:/Img/蔡徐坤.mp4')
while (cap.isOpened()):
ret, frame = cap.read()
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
ksize = 15
sigma = 10
inv = 255 - gray
blur = cv.GaussianBlur(inv, ksize=(ksize, ksize), sigmaX=sigma, sigmaY=sigma)
res = cv.divide(gray, 255 - blur, scale=255)
cv.imshow("sumiao", res)
mask = np.ones_like(frame, np.uint8)
h, w = frame.shape[:2]
mask[0:h//2,w//2:,:]=0
mask[h//2:,0:w//2,:]=0
# mask[:,w//2:,:]=0
# mask[:, :w // 2:, :] = 0
#mask[h//2:,:,:]=0
# mask[:h//2,:,:]=0
res = np.expand_dims(res, axis=2)
img = res * mask + frame * (1 - mask)
cv.imshow("mask", img)
if cv.waitKey(25) & 0xFF == ord('q'):
break
cap.release()
cv.destroyAllWindows()
7、模版匹配
import cv2 as cv
import numpy as np
def match_template():
src=cv.imread("F:/images/zwj.jpg")
tpl=cv.imread("F:/images/zwj2.jpg")
cv.imshow("input",src)
cv.imshow("tpl",tpl)
th,tw=tpl.shape[:2]
result=cv.matchTemplate(src,tpl,cv.TM_CCORR_NORMED)
cv.imshow("result",result)
minv,maxv,min_loc,max_loc=cv.minMaxLoc(result)
cv.rectangle(src,max_loc,(max_loc[0]+tw,max_loc[1]+th),(0,0,255),2,8,0)
cv.imshow("dst",src)
if __name__=="__main__":
match_template()
cv.waitKey(0)
cv.destroyWindow();
8、Python调用摄像头
import cv2 as cv
cap=cv.VideoCapture(0)
while(True):
ret,frame=cap.read()
gray=cv.cvtColor(frame,cv.COLOR_RGB2BGR)
cv.imshow("gray",gray)
if cv.waitKey(1)&0xFF==ord('1'):
break
cap.release()
cv.destroyWindow()
9、鼠标监听:
import cv2 as cv
import numpy as np
def my_mouse_callback(event,x,y,flag,params):
if event==cv.EVENT_LBUTTONDOWN:
b=np.random.randint(0,256)
g=np.random.randint(0,256)
r=np.random.randint(0,256)
cv.circle(params,(x,y),50,(b,g,r),2,cv.LINE_8,0)
if event==cv.EVENT_LBUTTONDOWN:
x1 = np.random.rand() * 600
y1 = np.random.rand() * 600
x2 = np.random.rand() * 600
y2 = np.random.rand() * 600
b = np.random.randint(0, 256)
g = np.random.randint(0, 256)
r = np.random.randint(0, 256)
cv.line(params, (np.int(x1), np.int(y1)), (np.int(x2), np.int(y2)), (b, g, r), 4, cv.LINE_8, 0)
def mouse_demo():
src=np.zeros((512,512,3),dtype=np.uint8)
cv.namedWindow("mouse_demo",cv.WINDOW_AUTOSIZE)
cv.setMouseCallback("mouse_demo",my_mouse_callback,src)
while(True):
cv.imshow("mouse_demo",src)
c=cv.waitKey(20)
if c==27:
break
# cv.imshow("src",src)
if __name__=="__main__":
mouse_demo()
cv.waitKey(0)
cv.destroyAllWindows()
10、滑动块:
import cv2 as cv
import numpy as np
def do_nothing(pl):
pass
def track_bar_demo():
src=np.zeros((512,512,3),dtype=np.uint8)
cv.namedWindow("tb_demo",cv.WINDOW_AUTOSIZE)
cv.createTrackbar("B","tb_demo",0,255,do_nothing)
cv.createTrackbar("G","tb_demo",0,255,do_nothing)
cv.createTrackbar("R","tb_demo",0,255,do_nothing)
while(True):
b=cv.getTrackbarPos("B","tb_demo")
g = cv.getTrackbarPos("G", "tb_demo")
r = cv.getTrackbarPos("R", "tb_demo")
src[:]=[b,g,r]
cv.imshow("tb_demo",src)
c=cv.waitKey(15)
if c==27:
break
if __name__=="__main__":
track_bar_demo()
cv.waitKey(0)
cv.destroyAllWindows()
10、绘制直方图
import cv2 as cv
from matplotlib import pyplot as plt
img=cv.imread("D:/images/myj.jpg")
cv.imshow('input',img)
color=('b','g','r')
for i,col in enumerate(color):
histr=cv.calcHist([img],[i],None,[256],[0,256])
plt.plot(histr,color=col)
plt.show()
cv.waitKey(0)
cv.destroyAllWindows()
posted on 2020-10-24 19:08 好玩的MATLAB 阅读(0) 评论(0) 编辑 收藏 举报 来源