OpenCV笔记1:图像属性+打开图像+视频采集+绘制几何图形、文字

OpenCV

图像属性

  • 三通道:BGR
  • 图像shape:height、weight、channel

打开图像

  1. 创建窗口 namedWindow
  2. 设置窗口大小 resizeWindow
  3. 找到图像路径,打开 imread
  4. 显示 imshow
  5. 等待 waitKey
  6. 释放窗口 destroyAllWindows
python 复制代码
"""
1. 创建窗口
2. 设置窗口大小
3. 找到图像路径,打开
4. 显示
5. 等待
6. 释放窗口
"""
import cv2

# 创建窗口
# 参数1 窗口名字
# 参数2 模式
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
# 设置窗口大小
cv2.resizeWindow('img', 800, 600)
# 打开/读取图像
img = cv2.imread('./snower.jpg')
# print(img.shape)
#  h    w    c
# (360, 360, 3)
# 显示图像
cv2.imshow('img', img)
# 等待
# 参数 > 0 则会等待ms
key = cv2.waitKey(1000)
# print(key)
# -1
# 释放窗口
cv2.destroyAllWindows()

效果图

视频采集

视频本质:由一帧一帧间隔时间很短的图像构成

  1. 接收摄像头 VideoCapture
    • 0:打开本地摄像头
    • 1-3:外接摄像头
  2. 读取一帧一帧的图像 isOpened
python 复制代码
"""
视频
本质:由一帧一帧间隔时间很短的图像构成
"""
import cv2

# 0 表示打开本地摄像头
# 1 2 3 外接摄像头
# 路径 播放视频
# 打开摄像头 视频采集
cap = cv2.VideoCapture(0)

while cap.isOpened():
    # 读取一帧一帧的图像
    retval, frame = cap.read()
    if not retval:
        print('can not read frame')
        break
    # imshow 会默认创建一个窗口
    cv2.imshow('frame', frame)
    key = cv2.waitKey(25)
    if key == ord('z'):
        break
cap.release()
cv2.destroyAllWindows()

效果图

绘制几何图形、文字

  • 线 line
  • 圆 circle
  • 矩形 rectangle
  • 多边形 polylines
  • 文字 putText
python 复制代码
"""
常见几何图形
点
线:起始点 + 终点
矩形:左上角的点 + 右下角的点
圆:圆心 + 半径
多边形
"""
import cv2
import numpy as np

bg_img = cv2.imread('./snower.jpg')
# 参数1 绘制的图
# 参数2 起始点
# 参数3 终点
# 参数4 颜色
# 参数5 线的大小
cv2.line(bg_img, (350, 50), (100, 100), color=(0, 0, 255), thickness=2)
# 矩形
cv2.rectangle(bg_img, (50, 50), (100, 100), color=(0, 255, 0), thickness=-1)
# 圆
cv2.circle(bg_img, (150, 150), 50, color=(255, 0, 255), thickness=2)
pts = np.array([(90, 150), (150, 200), (200, 300), (300, 80), (80, 30)])
# 多边形
cv2.polylines(bg_img, [pts], isClosed=False, color=(255, 255, 0), thickness=2)
# 绘制文字
# org 绘制文字的坐标
cv2.putText(bg_img,
            text='hello world',
            org=(20, 50),
            fontFace=cv2.FONT_ITALIC,
            fontScale=1.5,
            color=(0, 255, 255),
            thickness=2)
cv2.imshow('img', bg_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果图

相关推荐
实名上网宋凯宣8 小时前
Django
后端·python·django
如若1239 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
砚底藏山河10 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
视觉小萌新10 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
小豆庄10 小时前
本地视频打码:多模型检测、帧间追踪与18种模糊的选型
opencv·目标检测·ai·自然语言处理·音视频·视频
薛定谔的猫-菜鸟程序员11 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
爱聊灵光的维C12 小时前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
Ramble_Naylor13 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
yyyang8813 小时前
蓝牙系统整体架构详解
学习·信息与通信
Allen_LVyingbo13 小时前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构