OpenCV入门2——图像视频的加载与展示一些API

文章目录

题目

D

OpenCV创建显示窗口

多看源码参考文档

python 复制代码
import cv2
cv2.namedWindow('new', cv2.WINDOW_NORMAL)
cv2.imshow('new', 0)

key = cv2.waitKey(0)
if(key == 'q'):
    exit()

cv2.destroyAllWindows()


python 复制代码
import cv2
cv2.namedWindow('new', cv2.WINDOW_NORMAL)
cv2.resizeWindow('new', 1920, 1080)
cv2.imshow('new', 0)

key = cv2.waitKey(0)
if(key == 'q'):
    exit()

cv2.destroyAllWindows()

OpenCV加载显示图片



python 复制代码
import cv2
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
# cv2.resizeWindow('img', 1920, 1080)
img = cv2.imread('E://pic//mylove.jpg')
cv2.imshow('img', img)

key = cv2.waitKey(0)
if(key &0xff == ord('q')):
    cv2.destroyAllWindows()

可以看官方文档

其中提到,cv2.waitKey()返回值是int类型,而ASCII码是8位(char),所以我们需要用key &0xff取它的低八位来实现,而ord函数是Python中的另一个内建函数,用于将字符转换为对应的ASCII码。

题目

B

OpenCV保存文件

python 复制代码
import cv2
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
# cv2.resizeWindow('img', 1920, 1080)
img = cv2.imread('E://pic//mylove.jpg')

while True:
    cv2.imshow('img', img)
    key = cv2.waitKey(0)
    if(key & 0xff == ord('q')):
        break
    elif(key & 0xff == ord('s')):
        cv2.imwrite("E://pic//picc//mylove.png", img)
        break
    else:
        print(key - 32)

cv2.destroyAllWindows()

利用OpenCV从摄像头采集视频





python 复制代码
# -*- coding: utf-8 -*-
import cv2

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

# 获取视频设备
cap = cv2.VideoCapture(0)

while True:
    # 从摄像头读取视频帧
    ret, frame = cap.read()

    # 将视频帧在窗口中显示
    cv2.imshow('video', frame)

    # 等待键盘事件,如果为q,退出
    key = cv2.waitKey(1)
    if(key & 0xff == ord('q')):
        break

# 释放VideoCapture
cap.release()
cv2.destroyAllWindows()

从多媒体文件中读取视频帧

和之前从摄像头采集视频最大的区别是,要根据视频的fps来修改cv2.waitKey()里的值,如果你是22fps的视频,相当于1s走22帧,即1000ms走22帧,即一帧需要1000 / 22ms,而这个就是cv2.waitKey()里应该填的值

python 复制代码
# -*- coding: utf-8 -*-
import cv2

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

# 获取视频设备/从视频文件中读取视频帧
# cap = cv2.VideoCapture(0)
cap = cv2.VideoCapture("E://DownloadPack//Video//particles.mp4")

while True:
    # 从摄像头读取视频帧
    ret, frame = cap.read()

    # 将视频帧在窗口中显示
    cv2.imshow('video', frame)

    # 等待键盘事件,如果为q,退出
    key = cv2.waitKey(40)
    if(key & 0xff == ord('q')):
        break

# 释放VideoCapture
cap.release()
cv2.destroyAllWindows()

将视频数据录制成多媒体文件





python 复制代码
# -*- coding: utf-8 -*-
import cv2

# 创建VideoWriter为写多媒体文件
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
vw = cv2.VideoWriter('.//out.mp4', fourcc, 24, (1280, 720))

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

# 获取视频设备/从视频文件中读取视频帧
cap = cv2.VideoCapture(0)
# cap = cv2.VideoCapture("E://DownloadPack//Video//particles.mp4")

while True:
    # 从摄像头读取视频帧
    ret, frame = cap.read()

    # 将视频帧在窗口中显示
    cv2.imshow('video', frame)

    # 写数据到多媒体文件
    vw.write(frame)

    # 等待键盘事件,如果为q,退出
    key = cv2.waitKey(40)
    if(key & 0xff == ord('q')):
        break

# 释放VideoCapture
cap.release()

# 释放VideoWriter
vw.release()

cv2.destroyAllWindows()


python 复制代码
# -*- coding: utf-8 -*-
import cv2

# 创建VideoWriter为写多媒体文件
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
vw = cv2.VideoWriter('.//out.mp4', fourcc, 24, (1280, 720))

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

# 获取视频设备/从视频文件中读取视频帧
cap = cv2.VideoCapture(0)
# cap = cv2.VideoCapture("E://DownloadPack//Video//particles.mp4")

# 判断摄像头是否为打开状态
while cap.isOpened():
    # 从摄像头读取视频帧
    ret, frame = cap.read()

    if ret == True:
        # 将视频帧在窗口中显示
        cv2.imshow('video', frame)
        # 重新将窗口设置为指定大小
        cv2.resizeWindow('video', 640, 480)
        # 写数据到多媒体文件
        vw.write(frame)

        # 等待键盘事件,如果为q,退出
        key = cv2.waitKey(40)
        if(key & 0xff == ord('q')):
            break
    else:
        break;

# 释放VideoCapture
cap.release()

# 释放VideoWriter
vw.release()

cv2.destroyAllWindows()

OpenCV控制鼠标





python 复制代码
# -*- coding: utf-8 -*-
import cv2
import numpy as np

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

# 创建窗口
cv2.namedWindow('mouse', cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse', 640, 360)

# 设置鼠标回调
cv2.setMouseCallback('mouse', mouse_callback, "666")

# 显示窗口和背景
img = np.zeros((360, 640, 3), np.uint8)
while True:
    cv2.imshow('mouse', img)
    key = cv2.waitKey(0)
    if key & 0xff == ord('q'):
        break

cv2.destroyAllWindows()


关于np.uint8

OpenCV中的TrackBar控件




TrackBar的使用

OpenCV颜色空间默认BGR格式

python 复制代码
# -*- coding: utf-8 -*-
import cv2
import numpy as np

def callback():
    pass

# 创建窗口
cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL)

# 创建trackbar
cv2.createTrackbar('R', 'trackbar', 31, 255, callback)
cv2.createTrackbar('G', 'trackbar', 24, 255, callback)
cv2.createTrackbar('B', 'trackbar', 0, 255, callback)

# 创建一个背景图片
img = np.zeros((480, 640, 3), np.uint8)

while True:
    # 获取当前trackbar的值
    r = cv2.getTrackbarPos('R', 'trackbar')
    g = cv2.getTrackbarPos('G', 'trackbar')
    b = cv2.getTrackbarPos('B', 'trackbar')

    # 改变背景图片颜色
    img[:] = [b, g, r]
    cv2.imshow('trackbar', img)

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

cv2.destroyAllWindows()

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

相关推荐
qzhqbb3 小时前
基于统计方法的语言模型
人工智能·语言模型·easyui
冷眼看人间恩怨3 小时前
【话题讨论】AI大模型重塑软件开发:定义、应用、优势与挑战
人工智能·ai编程·软件开发
2401_883041083 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
AI极客菌4 小时前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭4 小时前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
幼儿园老大*5 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
考试宝5 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
Power20246665 小时前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp