当前位置: 首页 > article >正文

OpenCV基础【图像和视频的加载与显示】

目录

一.创建一个窗口,显示图片

二.显示摄像头/多媒体文件

三.把摄像头录取到的视频存储在本地

四.鼠标回调事件

五.TrackBar滑动条


一.创建一个窗口,显示图片

import cv2

img_path = "src/fengjing.jpg"  # 自己的图片路径
img = cv2.imread(img_path)  # 读取图片

# 创建一个可调大小的窗口
cv2.namedWindow("meijing", cv2.WINDOW_NORMAL)

# 调整窗口的尺寸
cv2.resizeWindow("meijing", 800, 600)  # 设置窗口大小为 800x600

# 显示图像
cv2.imshow("meijing", img)

# 等待用户按键按下,0表示无限等待
while True:
    key = cv2.waitKey(0)

    if key == ord('q'):
        print("quit")
        break
    #按下s保存图片
    elif key==ord('s'):   #这里需要转换为ascii码对比
        print("save")
        cv2.imwrite("src/meijing1.jpg", img)
        break
    else:
        print("key:", key)
#释放资源
cv2.destroyAllWindows()

二.显示摄像头/多媒体文件

import cv2

#创建窗口
cv2.namedWindow("Live Video",cv2.WINDOW_NORMAL)

#从摄像头中读取视频流
cap1=cv2.VideoCapture(0)

#从多媒体文件中读取视频流  我把视频文件放在了当前工程src文件夹下
cap2=cv2.VideoCapture("src/zlyBrithday.mp4")

while True:
    #读取视频流,这里自己选择cap1或cap2
    ret,frame=cap2.read()
    #如果读取成功
    if ret:
        #显示视频流
        cv2.imshow("Live Video",frame)
        #设置延迟,避免视频速度太快
        key = cv2.waitKey(20)
        if key == ord('q'):
            break
#释放资源
cap1.release()
cap2.release()
cv2.destroyAllWindows()

三.把摄像头录取到的视频存储在本地

import cv2

#创建窗口
cv2.namedWindow("window", cv2.WINDOW_NORMAL)
cv2.resizeWindow("window", 800, 600)

//获取摄像头
cap = cv2.VideoCapture(0)

#这里比较关键,如果参数不符合摄像头视频的要求,则无法正常保存写入,所以一般不使用自己输入的参数
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

#注意类型组合
fourcc = cv2.videoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('src/output.avi', fourcc, fps, (width, height))

#如果摄像头是打开的
while cap.isOpened():
    ret, frame = cap.read()
    if ret == True:
        cv2.imshow("window", frame)
        out.write(frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

cap.release()
out.release()
cv2.destroyAllWindows()

四.鼠标回调事件

import cv2
import numpy as np

#鼠标回调函数
def mouse_callback(event, x, y, flags, userdata):
    print(event, x, y, flags, userdata)

#创建窗口
cv2.namedWindow('MyWindow', cv2.WINDOW_NORMAL)
cv2.resizeWindow('MyWindow', 640, 480)

#绑定鼠标回调
cv2.setMouseCallback('MyWindow', mouse_callback, 'hello opencv!')

#注意这里参数和窗口相反
img = np.zeros((480, 640, 3), np.uint8)

while True:
    cv2.imshow('MyWindow', img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()

五.TrackBar滑动条

import  cv2
import numpy as np
def callback():
    pass


#创建窗口
cv2.namedWindow("TrackBar",cv2.WINDOW_NORMAL)
cv2.resizeWindow("TrackBar",480,640)

#创建滑动条
cv2.createTrackbar("R","TrackBar",0,255,callback)
cv2.createTrackbar("G","TrackBar",0,255,callback)
cv2.createTrackbar("B","TrackBar",0,255,callback)

img = np.zeros((640,480,3),np.uint8)
while True:
    r=cv2.getTrackbarPos("R","TrackBar")
    g=cv2.getTrackbarPos("G","TrackBar")
    b=cv2.getTrackbarPos("B","TrackBar")

    img[:]=[b,g,r] #设置BGR颜色
    cv2.imshow("TrackBar", img)

    if cv2.waitKey(10) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

效果:


http://www.kler.cn/a/586818.html

相关文章:

  • 蓝光三维扫描技术:手机闪光灯模块全尺寸3D检测的精准解决方案
  • 【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]
  • nodejs42 (UI相关) : svg的viewBox属性
  • Mamba组件:状态空间模型简介
  • MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.2 MySQL开发环境搭建
  • HarmonyOS NEXT - 网络请求问题(http)
  • FLASK和GPU依赖安装
  • Linux驱动开发框架基础——新旧字符设备驱动笔记整理(1)
  • 软考中级设计模式实战宝典:核心意图解析+适用场景+完整源码下载+高频题库
  • 如何在AVL树中高效插入并保持平衡:一步步掌握旋转与平衡因子 —— 平衡因子以及AVL结构篇
  • 【mysql】centOS7安装mysql详细操作步骤!—通过tar包方式
  • 机器人技能列表
  • 通过特征值和特征向量实现的图像压缩和特征提取
  • 大模型训练全流程深度解析
  • 力扣-单调栈-739 每日温度
  • spring-aop笔记
  • 2023 年全国职业院校技能大赛(中职组)移动应用与开发赛项 赛题第十套
  • Python基础入门掌握(九)
  • 设计签到 用redis 和 MySQL
  • 目标检测中衡量模型速度和精度的指标:FPS和mAP