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

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

效果:

相关文章:

  • 超声重建,3D重建 超声三维重建,三维可视化平台 UR 3D Reconstruction
  • 链表·简单归并
  • 基于SpringBoot+Vue的毕业论文管理系统+LW示例参考
  • Vue:Vue+TS学习笔记
  • Linux第三次练习
  • 【后端】【django】【related_name】`related_name` 的作用
  • 召回度、准确度
  • Java基础面经
  • PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法
  • 【推荐项目】052-用水监控管理系统
  • 【Godot】Window类
  • 【SpringMVC】常用注解:@CookieValue
  • 股票查询系统
  • C#生产型企业ERP系统管理软件PCB行业ERP进销存MRP管理系统BOM管理
  • python---序列 (str,list,tuple)
  • RBAC 模型的简单实现
  • Mamba组件:状态空间模型简介
  • 使用 PerformanceObserver 实现网页性能优化的最佳实践
  • java字符串案例 //要求:将输入的字符串中的数字转换为罗马数字,长度小于9(运用方法:查表法)
  • 目标检测中衡量模型速度和精度的指标:FPS和mAP
  • 梅花奖在上海|“我的乱弹我的团”,民营院团首次入围终评
  • 听企业聊感受,《外企聊营商》5月13日起推出
  • 人民日报整版聚焦:专家学者看2025中国经济增长点
  • 中美经贸高层会谈11日在日内瓦将继续进行
  • 一生要出片的年轻人,买爆相机
  • 时代中国控股:前4个月销售额18.1亿元,境外债重组协议押后聆讯至5月底