Pycharm批量注释:Ctrl+/
01:
读入、显示、保存图片
import cv2
import numpy as np
img0 = cv2.imread("D:\test.png")#读取一张图片
cv2.imshow("Image2",img0)#显示一张图片
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('D:\test001.png',img0)#保存图片
cv2.destroyAllWindows()
02:
读取视频
为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频
cap = cv2.VideoCapture(0)
while(True):
ret,frame=cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1)&0xFF == ord('q'):
break
cap.release()
cv2.destoryAllWindows()
03:
画几何图形
import cv2
import numpy as np
img = cv2.imread("D:\test.png")
cv2.line(img,(0,0),(511,511),(255,0,0),5)#起点坐标,终点坐标,颜色,线宽
cv2.rectangle(img,(0,0),(510,128),(0,255,0),3)#左上坐标,右下坐标,颜色,线宽
cv2.circle(img,(200,50),50,(255,0,255),5)#圆心坐标,半径,颜色,线宽(空心圆)
cv2.circle(img,(300,50),50,(255,0,255),-1)#圆心坐标,半径,颜色,线宽=-1(实心圆)
cv2.ellipse(img,(300,500),(50,100),10,0,360,(255,0,255),-1)#椭圆中心坐标,(a,b),旋转角度,缺少的角度,画的角度,颜色,线宽
cv2.imshow("Image",img)
cv2.waitKey(0)
03:
在鼠标双击的位置画圆
def draw_circle(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDBLCLK:
cv2.circle(img,(x,y),100,(255,0,0),-1)
# 创建图像与窗口并将窗口与回调函数绑定
img=np.zeros((512,512,3),np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)
while(1):
cv2.imshow('image',img)
if cv2.waitKey(20)&0xFF==27:#等待ESC按下退出
break
cv2.destroyAllWindows()
03:
m切换鼠标操作,画矩形或者划线
import cv2
import numpy as np
# 当鼠标按下时变为 True
drawing=False
# 如果 mode 为 true 绘制矩形。按下'm' 变成绘制曲线。
mode=True
ix,iy=-1,-1
# 创建回调函数
def draw_circle(event,x,y,flags,param):
global ix,iy,drawing,mode
# 当按下左键是返回起始位置坐标
if event==cv2.EVENT_LBUTTONDOWN:
drawing=True
ix,iy=x,y
# 当鼠标左键按下并移动是绘制图形。 event 可以查看移动, flag 查看是否按下
elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
if drawing==True:
if mode==True:
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
else:
# 绘制圆圈,小圆点连在一起就成了线, 3 代表了笔画的粗细
cv2.circle(img,(x,y),3,(0,0,255),-1)
# 下面注释掉的代码是起始点为圆心,起点到终点为半径的
# r=int(np.sqrt((x-ix)**2+(y-iy)**2))
# cv2.circle(img,(x,y),r,(0,0,255),-1)
# 当鼠标松开停止绘画。
elif event==cv2.EVENT_LBUTTONUP:
drawing==False
# if mode==True:
# cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
# else:
# cv2.circle(img,(x,y),5,(0,0,255),-1)
img=np.zeros((512,512,3),np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)
while(1):
cv2.imshow('image',img)
k=cv2.waitKey(1)&0xFF
if k==ord('m'):
mode=not mode
elif k==27:
break