机器学习-OpenCV运用(1)

文章目录

一、OpenCV介绍

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它主要用于实时的图像处理和计算机视觉任务。虽然OpenCV本身更多地聚焦于图像处理和视觉任务,但它也提供了与机器学习相关的功能,使得开发者能够利用它来执行一些基本的机器学习任务。

二、OpenCV运用

OpenCV广泛应用于图像处理、视频分析、目标检测、机器学习等多个领域。这里我们先为大家介绍图像处理,与视频分析等相关运用。

1.读取保存图片

以下代码片段主要展示了如何使用OpenCV(通常用cv2来表示)来读取、显示和保存图像,并打印了图像的一些基本属性。

python 复制代码
import cv2
import numpy as np
a = cv2.imread('2.png')
print(a)
cv2.imshow("Mech Maiden",a)
b = cv2.waitKey(5000)
print(b)#
"""
调整模型观察shape,dtype,size属性
"""
print("图像形状(shape):",a.shape)
print("图像数据类型(dtype):",a.dtype)
print("图像大小(size):",a.size)
cv2.imwrite(r'./a', a)
  • 图像显示:cv2.imshow() 函数用于在窗口中显示图像。你需要确保在调用 cv2.waitKey()或类似函数之前调用它,因为窗口是事件驱动的,并且只有在有事件(如按键事件)发生时才会更新或保持开启状态。

    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/03b25290f1d749029fb4de62c164519f.png![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2750ed66b5c54ae1b91ae9f66ebd3bff.png)

  • 按键等待:cv2.waitKey(0)会无限期地等待用户按键。如果你指定了一个非零参数(如5000毫秒),则函数会等待指定的毫秒数,或者直到用户按键为止(以先到者为准)。如果在这段时间内按下了键,则返回该键的ASCII码;如果没有按键,则返回-1。

  • 图像保存:cv2.imwrite() 需要两个参数:文件路径和要写入的图像。确保为文件指定了正确的扩展名,以便操作系统知道如何处理该文件。

  • 销毁窗口:在程序结束之前,使用 cv2.destroyAllWindows()销毁所有OpenCV创建的窗口是一个好习惯。这有助于释放与窗口相关的资源。如果你只想销毁特定窗口,可以使用

    cv2.destroyWindow(windowName)。

2.读取视频

下面这段代码通过OpenCV库实现了视频文件的打开、逐帧读取、灰度转换、显示以及按键控制视频播放的功能。用户可以通过按下Esc键来停止视频播放并退出程序。同时,在程序结束前,它还负责释放视频文件资源和销毁所有OpenCV创建的窗口,以确保资源得到妥善管理。

python 复制代码
# 打开视频文件
video = cv2.VideoCapture('F:/code/pachong/video.mp4')
# 检查是否打开成功
if not video.isOpened():
    print("无法打开视频文件")
    exit()
    # 循环读取视频帧
while True:
    ret, frame = video.read()  # ret是布尔值,表示是否成功读取,frame是读取到的帧
    # 检查是否成功读取帧
    if not ret:
        break
    # 转换灰度图
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Video', frame)
    if cv2.waitKey(30) == 27:
        break

video.release()
cv2.destroyAllWindows()
  • 打开视频文件:使用cv2.VideoCapture函数尝试打开指定路径的视频文件,这里的'F:/code/pachong/video.mp4'是视频文件的路径
  • 读取视频文件:检查视频文件是否成功打开,然后进入无限循环,逐帧读取视频,使用video.read()方法尝试读取视频中的下一帧 ,它返回两个值ret和frame,ret是一个布尔值,如果正确读取到帧,则为True;如果文件结束或发生错误,则为False ,frame是读取到的帧,它是一个numpy数组 ,如果ret为False,则跳出循环,表示视频已经播放完毕或读取过程中发生了错误。
  • 灰度图转换:将帧从BGR颜色空间转换为灰度图,并展示灰度图。
  • 结束视频播放:程序会暂停30毫秒等待用户输入,如果在30毫秒内有按键被按下,则返回按键的ASCII码;如果没有按键被按下,则返回-1,这里特别检查是否按下了Esc键(ASCII码为27),如果是,则跳出循环,结束视频播放 。

3.图像切片

这段代码是从一个图像文件中读取图像,并从这个图像中裁剪出一个特定的区域,然后显示原始图像和裁剪后的图像。

python 复制代码
a = cv2.imread(r'./2.png')
b = a[400:800, 1000:3000]
cv2.imshow('yuantu', a)
cv2.imshow('qiepian', b)
cv2.waitKey(10000)
cv2.destroyAllWindows()
  • 读取图像:a = cv2.imread(r'./2.png') 尝试从当前目录下读取名为 2.png 的图像文件,并将其存储在变量 a

    中。

  • 裁剪图像:b = a[400:800, 1000:3000] 尝试从图像 a

    中裁剪出一个区域,这个区域的起始行是400,结束行是800(但不包括800),起始列是1000,结束列是3000(但不包括3000)。

  • 显示图像:使用 cv2.imshow 函数分别显示原始图像 a 和裁剪后的图像 b。

  • 等待按键:cv2.waitKey(10000)

    使窗口保持打开状态10000毫秒(即10秒),等待用户按键。如果用户在这个时间内按下任意键,cv2.waitKey

    将返回按键的ASCII码;如果超时,则返回-1。

  • 销毁窗口:cv2.destroyAllWindows() 销毁所有OpenCV创建的窗口。

相关推荐
视觉小萌新3 分钟前
VScode+opencv——关于opencv多张图片拼接成一张图片的算法
vscode·opencv·算法
Chef_Chen9 分钟前
从0开始学习机器学习--Day25--SVM作业
学习·机器学习·支持向量机
矢量赛奇13 分钟前
比ChatGPT更酷的AI工具
人工智能·ai·ai写作·视频
KuaFuAI21 分钟前
微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?
人工智能·github·aigc·ai编程·codeflying·github spark·自然语言开发软件
Make_magic30 分钟前
Git学习教程(更新中)
大数据·人工智能·git·elasticsearch·计算机视觉
shelly聊AI34 分钟前
语音识别原理:AI 是如何听懂人类声音的
人工智能·语音识别
源于花海37 分钟前
论文学习(四) | 基于数据驱动的锂离子电池健康状态估计和剩余使用寿命预测
论文阅读·人工智能·学习·论文笔记
雷龙发展:Leah38 分钟前
离线语音识别自定义功能怎么用?
人工智能·音频·语音识别·信号处理·模块测试
4v1d42 分钟前
边缘计算的学习
人工智能·学习·边缘计算
风之馨技术录1 小时前
智谱AI清影升级:引领AI视频进入音效新时代
人工智能·音视频