> 文章列表 > python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

文章目录

    • `课程目标`
    • 认识openCV
    • 如何安装openCV
    • OpenCV 读取、缩放、翻转、写入图像
      • 读取图片
      • 缩放图片
      • 翻转图片
      • 写入图片
    • openCV绘制图形和文字
      • 创建一个纯黑色的底图
      • 画一个矩形
      • 再画一个正方形
      • 再画一个圆形
      • 再画一个实心圆
      • 画一条线
      • 画多边形
      • 在真实的图片上加载图形
      • 在真实的图片上加载文字
    • OpenCV 视频操作
      • 演示在python的窗口中显示图片
      • OpenCV读取摄像头视频流, 并且显示
      • OpenCV读取视频文件
      • OpenCV读取摄像头视频流, 并且显示和保存为mp4文件
      • OpenCV在摄像头视频流上添加文字和图形

本人工作中,用到了ai相关技术,但是java出身,所以从0开始学习,先从python入门了,本文章为第六篇。

“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。”

课程目标

  • 安装 OpenCV
  • OpenCV 读取、缩放、翻转、写入图像
  • OpenCV 在图像上绘制文字、几何图形
  • OpenCV 视频操作

认识openCV

OpenCV(Open Source Computer Vision) 是计算机视觉和机器学习软件库
Intel 1999年 创建,用C++语言编写 (提供了Python、Ruby、MATLAB等接口),OpenCV 支持对图像缩放、旋转、绘制文字图形等基础操作
OpenCV 库包含了很多计算机视觉领域常见算法: 目标检测、目标跟踪等.

如何安装openCV

安装
conda install -c conda-forge opencv
conda install opencv (换源后)或pip install opencv-python
检查是否安装成功:

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

OpenCV 读取、缩放、翻转、写入图像

进入jupyter-lab,代码如下:

读取图片

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

缩放图片

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

翻转图片

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

写入图片

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

openCV绘制图形和文字

创建一个纯黑色的底图

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

画一个矩形

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

再画一个正方形

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

再画一个圆形

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

再画一个实心圆

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

画一条线

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

画多边形

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

在真实的图片上加载图形

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

在真实的图片上加载文字

字体包位置:
python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作
写个文字的工具方法:

# 导入PIL对应包
import cv2
from PIL import Image, ImageDraw, ImageFont
import numpy as np# 绘制中文
def cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=30):img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))draw = ImageDraw.Draw(img)# 字体的格式fontStyle = ImageFont.truetype("./../font/simsun.ttc", textSize, encoding="utf-8")# 绘制文本draw.text(position, text, textColor, font=fontStyle)# 转换回OpenCV格式return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

OpenCV 视频操作

演示在python的窗口中显示图片

# 演示在python的窗口中显示图片
# 导入opencv
import cv2
import numpy as np# 读取图片
img = cv2.imread('./../img/cat.jpg')# 显示图片
while True:cv2.imshow('Demo',img)# 等待10毫秒 ,如果等待至少10ms,并且用户按了ESC键 (ord(''))#if cv2.waitKey(10) & 0xFF == 27:if cv2.waitKey(10) & 0xFF == ord('q'):break# 关闭所有的窗口
cv2.destroyAllWindows()

OpenCV读取摄像头视频流, 并且显示

"""
OpenCV读取摄像头视频流, 并且显示"""# 导入OpenCV
import cv2
import numpy as np#调用摄像头
cap = cv2.VideoCapture(0)while True:# 返回framerec,frame = cap.read()# 镜像frame = cv2.flip(frame, 1)# 灰度显示gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 显示画面cv2.imshow('Demo', frame)#退出条件: qif cv2.waitKey(10) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

OpenCV读取视频文件

"""
OpenCV读取视频文件
"""# 导入opencv的包
import cv2
import numpy as np# 读取文件
cap = cv2.VideoCapture('./../video/myDemo.mp4',0)if not cap.isOpened():print('文件不存在或者编码错误')while cap.isOpened():# 读取每一帧ret, frame = cap.read()    if ret:# 显示画面cv2.imshow('Demo', frame)#退出条件if cv2.waitKey(10) & 0xFF == ord('q'):breakelse:   # 画面播放完毕,自动退出break  cap.release()
cv2.destroyAllWindows()    

OpenCV读取摄像头视频流, 并且显示和保存为mp4文件

"""
OpenCV读取摄像头视频流, 并且显示
保存为mp4文件
"""# 导入OpenCV
import cv2
import numpy as np#调用摄像头
cap = cv2.VideoCapture(0)#编码
#DIVX,X264
fourcc = cv2.VideoWriter_fourcc(*'X264')
fps = 20# 获取摄像头实际大小
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))writer = cv2.VideoWriter('../video/myDemo.mp4',fourcc,fps,(width,height))
while True:# 返回framerec,frame = cap.read()# 镜像frame = cv2.flip(frame, 1)# 灰度显示gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 写入画面到文件writer.write(frame)# 显示画面cv2.imshow('Demo', frame)#退出条件: qif cv2.waitKey(10) & 0xFF == ord('q'):breakwriter.release()    
cap.release()
cv2.destroyAllWindows()

OpenCV在摄像头视频流上添加文字和图形

"""
OpenCV在摄像头视频流上添加文字和图形
"""# 导入opencv等包
import cv2
import numpy as np
import time
# 导入自定义模块
import drawUtils# 读取摄像头
cap = cv2.VideoCapture(0)   # 当前Unix时间戳
start_time = time.time()while True:# 读取每一帧    ret, frame = cap.read()   # 对frame进行操作frame = cv2.flip(frame, 1)# 画一个矩形cv2.rectangle(frame, (20,200),(120,300),(255,0,255),10)now = time.time()fps_text = int(1/( now - start_time))start_time = nowframe_text = "帧率: " + str(fps_text)# print(fps_text)#显示帧率frame = drawUtils.cv2AddChineseText(frame, frame_text, (20,50),(0,255,0),30)# 显示画面cv2.imshow('Demo', frame)   #退出条件 ESCif cv2.waitKey(10) & 0xFF == 27:breakcap.release()
cv2.destroyAllWindows()    

效果如下:

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作
本人太帅,打码了哈哈。


大功告成!!!

“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。”

联盟吧