python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)

初试之后的第11天, 简单的学习opencv的基础操作为毕设做准备。

环境: jupyter notebook
语言:python
需要提前下载好opencv相关的库

导包

import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

opencv窗口基础操作

创建窗口

cv2.namedWindow("window",cv2.WINDOW_NORMAL)

  • 第一个参数为窗口的名字
  • 第二个参数为窗口的大小类型,具体内容可以查看其源码,通常使用的是 cv2.WINDOW_NORMALcv2.WINDOW_AUTOSIZE 前者是可以手动更改窗口大小,而后者可以自适应
    python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)

修改窗口大小

cv2.resizeWindow('window',800,600)

展示指定窗口

cv2.imshow('window',0)

指定按键销毁窗口

  • 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)

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)
展示图片(使用opencv自带的函数)

opencv读进来的通道是BGR,不是传统的RGB
使用使用matplotlib的imshow的结果会与原图不同


plt.imshow(rose)

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)

cv2.imshow('rose',rose)
key = cv2.waitKey(0)
if key == ord('q'):
    cv2.destroyAllWindows()

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)
封装显示图片的函数,默认按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()

绘制背景板

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)
画线

cv2.line(img, (10,20),(300,400), (0,0,255), 5)

分别给出起始点,终点,颜色,粗细即可

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)
画矩形

cv2.rectangle(img, (10,20),(300,400), (0,0,255), 5)

分别给出左上角端点和右下角端点,颜色,粗细即可

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)
画圆

v2.circle(img, (320,240),100,(0,0,255), 5)

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)
标注文字

opencv中不能显示中文,要显示中文需要借助PIL库,见下文

cv2.putText(img,'Hello OpenCV',(50,400),cv2.FONT_HERSHEY_COMPLEX,2,[0,0,255])

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)
中文标注文字

需要提前准备好用到的字体文件


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)

python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)

完整代码


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 opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)

摄像头与人脸识别代码如下


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()

Original: https://blog.csdn.net/Weary_PJ/article/details/122343075
Author: Joker-Tong
Title: python opencv 详细入门操作(含创建窗口, 显示图像, 标记图像, 调动摄像头, 简单人脸识别)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/702357/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球