学习视频很棒的视频,有需要的可以去看一下【不要再看那些过时的OpenCV老教程了】2022巨献,OpenCV零基础小白最新版全套教程(人工智能机器视觉教程)_哔哩哔哩_bilibili
# opencv名字将opencv但导入包的时候,叫cv2
import cv2
#创建窗口
#WINDOW_AUTOSIZE不允许修改窗口大小
#cv2.namedWindow('window',cv2.WINDOW_AUTOSIZE)
cv2.namedWindow('window',cv2.WINDOW_NORMAL)
#更改窗口的大小
cv2.resizeWindow('window',800,600)
#展示名字为window的窗口
cv2.imshow('window',0)
#等待按键
#waitKey会返回按键的ASCII的值
#0表示为任意按键,如果给其他的整数,表示等待按键的时间,单位是毫秒
#可以利用waitKey来销毁窗口
key=cv2.waitKey(0)
if key==ord('q'):
print("准备销毁窗口")
cv2.destroyAllWindows()
#将同一文件夹的图片th.jpg提取出出来
cat=cv2.imread('th.jpg')
#将cat图片显示在标题为cat的窗口中
cv2.imshow('tu',cat)
import cv2
#创建窗口
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',640,480)
#读取图片
img=cv2.imread('./th.jpg')
while True:
cv2.imshow('img',img)
key=cv2.waitKey(0)
if key==ord('q'):
break
#保存图片
elif key==ord('s'):
cv2.imwrite('123.png',img)
else:
print(key)
cv2.destroyAllWindows()
#视频就是一帧一帧的
import cv2
cv2.namedWindow('video',cv2.WINDOW_NORMAL)
cv2.resizeWindow('video',640,480)
#0为第几个摄像头,也可以改为1
#cap=cv2.VideoCapture(0)
#上面为打开摄像头,下面为播放视频
cap=cv2.VideoCapture('01.mp4')
#循环读取摄像头的每一帧
while True:
#读一帧数据,返回标记和这一帧的数据,Teue表示读取到了数据,False则是没有读取到数据
ret,frame=cap.read()
#可以根据ret做判断
if not ret:
#没读到数据,直接退出
break
#显示数据
cv2.imshow('video',frame)
#10毫秒读取一帧,只能为整数
key=cv2.waitKey(10)#10毫秒读取一帧,智能为整数
if key==ord('q'):
break
#别忘记释放资源
cap.release()
cv2.destroyAllWindows()
# 视频录制
#创建VideoWriter为写多媒体文件
cap=cv2.VideoCapture(0)
#fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
#创建videoWreiter
#1280, 720录制不会成功,640,480也一样。保存的视频只会有1Kb
#(输出文件,多媒体文件格式,帧数,摄像头分辨率)
#vw = cv2.VideoWriter('./out.mp4', fourcc, 30, (640, 480))
vw = cv2.VideoWriter('./out.avi', fourcc, 30, (640, 480))
while cap.isOpened():
ret,frame=cap.read()
if not ret:
break
#写每一帧数据
vw.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1)==ord('q'):
break
#释放
#摄像头
cap.release()
#缓存内容写入磁盘, 并释放资源
vw.release()
#窗口
cv2.destroyAllWindows()
event
EVENT_MOUSEMOVE 0 #滑动
EVENT_LBUTTONDOWN 1 #左键点击
EVENT_RBUTTONDOWN 2 #右键点击
EVENT_MBUTTONDOWN 3 #中键点击
EVENT_LBUTTONUP 4 #左键放开
EVENT_RBUTTONUP 5 #右键放开
EVENT_MBUTTONUP 6 #中键放开
EVENT_LBUTTONDBLCLK 7 #左键双击
EVENT_RBUTTONDBLCLK 8 #右键双击
EVENT_MBUTTONDBLCLK 9 #中键双击
flags
EVENT_FLAG_LBUTTON 1 #左鍵拖曳
EVENT_FLAG_RBUTTON 2 #右鍵拖曳
EVENT_FLAG_MBUTTON 4 #中鍵拖曳
EVENT_FLAG_CTRLKEY 8 #(8~15)按Ctrl不放事件
EVENT_FLAG_SHIFTKEY 16 #(16~31)按Shift不放事件
EVENT_FLAG_ALTKEY 32 #(32~39)按Alt不放事件
import cv2
import numpy as np
#函数名可以随便取,但是参数必须是5个
#eventk表示鼠标事件,x,y是鼠标坐标,flags鼠标组合按键
def mouse_callback(event,x,y,falgs,userdata):
print(event,x,y,falgs,userdata)
if event==2:
#在这里关掉了,后面又会马上打开
cv2.destroyAllWindows()
#创建窗口
cv2.namedWindow('mouse',cv2.WINDOW_NORMAL)
#宽,高
cv2.resizeWindow('mouse',640,360)
#设置鼠标回调函数
cv2.setMouseCallback('mouse',mouse_callback,'123')
#生成全黑的图片,与窗口宽高反过来
img=np.zeros((360,640,3),np.uint8)
while True:
cv2.imshow('mouse',img)
key=cv2.waitKey(1)
if key==ord('q'):
break
cv2.destroyAllWindows()
#TrackBar的使用
import cv2
import numpy as np
#创建窗口
cv2.namedWindow('trackbar',cv2.WINDOW_NORMAL)
cv2.resizeWindow('trackbar',640,480)
#定义回调函数
def callback(value):
print(value)
pass
#创建3个trackbar
cv2.createTrackbar('R','trackbar',0,255,callback)
cv2.createTrackbar('G','trackbar',0,255,callback)
cv2.createTrackbar('B','trackbar',0,255,callback)
#创建图片
img=np.zeros((480,640,3),np.uint8)
while True:
#获取当前trackbar的值
r=cv2.getTrackbarPos('R','trackbar')
g=cv2.getTrackbarPos('G','trackbar')
b=cv2.getTrackbarPos('B','trackbar')
#用获取到的三个值修改图片颜色
#opencv中用的颜色是bgr
img[:]=[b,g,r]
cv2.imshow('trackbar',img)
key=cv2.waitKey(1)
if key==ord('q'):
break
cv2.destroyAllWindows()