前言

OpenCV 是目前最主流的计算机视觉开源库,零基础也能快速上手。本文整理日常开发最常用的OpenCV 基础操作,包含图片读写、灰度图、图像属性、ROI 区域截取、颜色通道拆分合并、视频帧处理,代码可直接复制运行,适合新手入门学习。


一、环境安装

使用前先安装依赖库,终端执行以下命令:

opencv-python库是计算机视觉最常用的工具库,写代码调用摄像头、读图、处理视频、人脸识别、物体检测全都靠它。

pip install opencv-python==3.4.18.65 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-contrib-python==3.4.18.65 -i https://pypi.tuna.tsinghua.edu.cn/simple

numpy是Python 科学计算基础库,OpenCV 必须依赖它才能运行。

pip install numpy== 1.25.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

如果不指定版本,运行代码将会报错,因为默认下载的都是最新版本,为保证代码稳定性,我们指定版本进行下载。

二、图像基础读取与显示

import cv2
import numpy as np

# 读取图片,默认读取BGR格式
a = cv2.imread("test.jpg")

# 展示图像
cv2.imshow("原图窗口", a)

#查看当前按下按键 ASCII码值
b = cv2.waitKey(0)
print(b)

# 等待按键输入,0代表无限等待,不同数字代表等待的时间,单位为ms
key = cv2.waitKey(0)


# 关闭所有图像窗口
cv2.destroyAllWindows()

# 打印图像基础信息
print("图像高、宽、通道数:", img.shape)
print("图像像素总个数:", img.size)
print("图像数据类型:", img.dtype)

读取的图片需要与py文件处于同一文件夹中,也可以选择读取其他文件夹的图片,需要用到相对路径,同时需要注意选择读取相对路径时,路径不能有中文。

三、灰度图像读取与保存

# 以灰度模式读取图片
import cv2
import numpy as np
a = cv2.imread('110614.png')
cv2.imshow('tu',a)
b = cv2.waitKey(0)


b = cv2.imread(r'./110614.png',0)
cv2.imshow('hui',b)
a = cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

四、图像切片

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

import cv2
import numpy as np
a = cv2.imread('110614.png')
cv2.imshow('tu',a)
b = cv2.waitKey(0)

a = cv2.imread('110614.png')
b = a[10:300,10:300]
cv2.imshow('qiepian',b)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

b = a[10:300,10:300]

图像在 Python 里是二维数组(矩阵)
格式:图像[ 行范围 , 列范围 ]
a[10:300, 10:300]
从第 10 行 到 第 300 行 裁剪
从第 10 列 到 第 300 列 裁剪
裁剪后的小图存在 b 里

五、读取视频

借助 OpenCV 库,这段代码实现了完整的视频播放流程:从视频文件的加载与校验,到逐帧读取、灰度处理与实时显示,再到用户交互控制与资源释放。用户可通过 ESC 键随时终止播放,程序结束时会自动释放视频句柄并清理所有 OpenCV 创建的窗口,避免资源泄漏。

import cv2

vidio_capture = cv2.VideoCapture('芦苇.mp4')#  摄像头:0

if not vidio_capture.isOpened():
    print("无法打开视频")
    exit()
while True:
    ret, frame = vidio_capture.read()
    if not ret:
        break
    # frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #调用颜色
    cv2.imshow('Video',frame)
    if cv2.waitKey(60)==27:   #ASCII码 ESC=27,空格=32
        break
vidio_capture.release()  #释放电脑资源避免卡顿
cv2.destroyAllWindows()

使用cv2.VideoCapture函数尝试打开指定的视频文件。
程序首先读取视频文件,并检查是否成功打开。随后进入循环,通过 video.read() 逐帧读取视频内容。该方法返回两个值:ret 与 frame。ret 为布尔值,成功读取帧时为 True,读取失败或视频结束时为 False;frame 是存储图像内容的 numpy 数组。若 ret 为 False,则退出循环,表示视频播放完毕或读取异常。
程序通过 cv2.waitKey(60) 每帧等待 60 毫秒的按键输入。如果检测到用户按下 Esc 键(ASCII 码 27),立即跳出循环,结束视频播放并关闭窗口。
在这里插入图片描述

frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #调用颜色

灰度图转换:将帧从BGR颜色空间转换为灰度图,并展示灰度图。

在这里插入图片描述


总结

本文涵盖 OpenCV 最核心八大基础用法:图片读取展示、灰度转换、图像属性查看、区域裁剪、纯色修改、视频播放、摄像头调用。熟练掌握以上代码,就能完成绝大多数基础图像处理需求,后续可延伸学习图像滤波、边缘检测、人脸检测等进阶玩法。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐