机器学习-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创建的窗口。

相关推荐
摆烂小白敲代码8 分钟前
大一新生以此篇开启你的算法之路
c语言·数据结构·c++·人工智能·经验分享·算法
盘古信息IMS14 分钟前
构建数字生态,布局智能未来——驱动PCB行业新质生产力发展的引擎
大数据·人工智能
Qspace丨轻空间37 分钟前
光影漫游者:沉浸式科技空间,打造未来体验—轻空间
大数据·人工智能·科技·安全·娱乐
python1561 小时前
使用PyTorch Lightning力量精简空间分析
人工智能·pytorch·python
双木的木1 小时前
数据分析1480 | 汇总17个工作必备的Python自动化代码(下)建议收藏!
运维·人工智能·python·sql·数据挖掘·数据分析·自动化
EasyCVR1 小时前
视频监控平台是如何运作的?EasyCVR视频汇聚平台的高效策略与实践
人工智能·音视频·视频编解码·视频监控·监控视频接入
api茶飘香1 小时前
精准电商营销:基于京东商品详情API返回值的数据分析
大数据·服务器·数据库·人工智能·python·数据分析·django
AI服务老曹1 小时前
形式向好、成本较低、可拓展性较高的名厨亮灶开源了
大数据·人工智能·开源·智慧城市·能源
企智汇软件1 小时前
制造业项目管理系统:企智汇软件专为制造企业量身定制项目管理
大数据·人工智能·项目管理软件·项目管理系统·企智汇·企智汇软件
杰克逊的日记2 小时前
PyTorch----模型运维与实战
人工智能·pytorch·python·gpu