cv2.waitKey(0)
返回按键的ascii码的值,参数0表示接受任意按键,换成其他的整数表示等待按键的时间,单位毫秒.
cv2.destroyAllWindows()
关闭该线程打开的所有窗口
key = cv2.waitKey(0)
if key == ord('q'):
cv2.destroyAllWindows()
cv2.namedWindow("window",cv2.WINDOW_AUTOSIZE)
cv2.namedWindow("window",cv2.WINDOW_NORMAL)
cv2.resizeWindow('window',800,600)
cv2.imshow('window',0)
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
cv2.destroyAllWindows()
opencv显示图像操作
使用imread
函数来读取当前的图片
rose = cv2.imread('./rose.jpeg')
rose.shape
type(rose)
展示图片(使用opencv自带的函数)
opencv读进来的通道是BGR,不是传统的RGB
使用使用matplotlib的imshow的结果会与原图不同
plt.imshow(rose)
cv2.imshow('rose',rose)
key = cv2.waitKey(0)
if key == ord('q'):
cv2.destroyAllWindows()
封装显示图片的函数,默认按q退出
def cv_show(name,img):
cv2.imshow(name,img)
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
cv2.destroyAllWindows()
cv2.imwrite('tong.jpg',img)
opencv标记图像操作
先绘制一块空白的黑色背景板, 然后完成基础的画线,画圆,标记等操作
注意: OpenCV中坐标的顺序,见下面的绘图
img = np.zeros((480,640,3),np.uint8)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
绘制背景板
cv2.line(img, (10,20),(300,400), (0,0,255), 5)
分别给出起始点,终点,颜色,粗细即可
cv2.rectangle(img, (10,20),(300,400), (0,0,255), 5)
分别给出左上角端点和右下角端点,颜色,粗细即可
v2.circle(img, (320,240),100,(0,0,255), 5)
opencv中不能显示中文,要显示中文需要借助PIL库,见下文
cv2.putText(img,'Hello OpenCV',(50,400),cv2.FONT_HERSHEY_COMPLEX,2,[0,0,255])
中文标注文字
需要提前准备好用到的字体文件
from PIL import ImageFont,ImageDraw,Image
img = cv2.imread('./rose.jpeg')
font = ImageFont.truetype('./msyhbd.ttc',15)
img_pil = Image.fromarray(img)
draw = ImageDraw.Draw(img_pil)
draw.text((100,350),'你好,我好,大家好', font = font,fill=(0,255,0,0))
img = np.array(img_pil)
cv_show('img',img)
img = np.zeros((480,640,3),np.uint8)
cv2.line(img, (10,20),(300,400), (0,0,255), 5)
cv2.rectangle(img, (10,20),(300,400), (0,0,255), 5)
cv2.circle(img, (320,240),100,(0,0,255), 5)
cv2.putText(img,'Hello OpenCV',(50,400),cv2.FONT_HERSHEY_COMPLEX,2,[0,0,255])
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
opencv调用摄像头操作
可以根据需要增加存储当前摄像头拍摄图片的操作
如 cv2.imwrite('tong.jpg',frame)
frame中存储的是摄像头拍到的图像
cv2.waitKey(1000//24) 表示一秒24帧
cap = cv2.VideoCapture(0)
while 1:
ret, frame = cap.read()
cv2.imshow('img',frame)
key = cv2.waitKey(1000//24)
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
OpenCV摄像头人脸识别
在python下载路径中Lib\site-packages\cv2\data
找到如下文件
摄像头与人脸识别代码如下
face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_alt.xml')
cap = cv2.VideoCapture(0)
while 1:
ret, frame = cap.read()
gray = cv2.cvtColor(frame,code=cv2.COLOR_BGR2GRAY)
faces = face_detector.detectMultiScale(gray)
for x,y,w,h in faces:
cv2.circle(frame,(x+w//2,y+h//2),w//2,[0,255,0],2)
cv2.imshow('frame',frame)
key = cv2.waitKey(1000//24)
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
复制代码