《Opencv》基础操作详解(1)

目录

一、Opencv简介

[OpenCV 的主要特点](#OpenCV 的主要特点)

二、Opencv库安装

1、opencv-python库安装

2、opencv-contrib-python库安装

[三、Opencv 基础操作](#三、Opencv 基础操作)

1、opencv库的导入

2、读取、展示图片

3、查看图片信息

4、控制图片显示时间、关闭窗口

5、读取灰度图

6、彩色图片转灰度图

7、图片的保存

8、读取视频、摄像头

9、图像的区域分割

10、视频的区域分割


一、Opencv简介

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,广泛应用于图像处理、视频分析、物体检测、人脸识别、增强现实等领域。它提供了丰富的函数和工具,支持多种编程语言(如C++、Python、Java等),并且可以在不同的操作系统(如Windows、Linux、macOS等)上运行。

OpenCV 的主要特点

  1. 开源免费

    • OpenCV 是基于 BSD 许可的开源库,可以免费用于学术和商业用途。
  2. 跨平台支持

    • 支持 Windows、Linux、macOS、Android 和 iOS 等多种操作系统。
  3. 丰富的图像处理功能

    • 提供了大量的图像处理函数,包括图像读取、显示、保存、滤波、变换、形态学操作等。
  4. 视频处理

    • 支持视频的读取、处理和保存,适用于实时视频流处理。
  5. 机器学习支持

    • 集成了多种机器学习算法,如支持向量机(SVM)、K-近邻(KNN)、决策树等,用于分类和检测任务。
  6. 硬件加速

    • 支持 GPU 加速(通过 OpenCL 或 CUDA),能够显著提高图像处理和视频分析的效率。
  7. 模块化设计

    • OpenCV 的模块化设计使得用户可以根据需求选择性地使用某些功能模块。
  8. 社区支持

    • 拥有庞大的开发者社区,提供了丰富的文档、教程和示例代码。

二、Opencv库安装

1、opencv-python库安装

在命令提示符界面输入以下命令即可直接安装opencv-python库,后面为指定的版本。直接安装的话会默认安装最新版本,新版本会存在一些兼容性以及版权问题,所以不推荐安装最新版本。

复制代码
pip install opencv-python==3.4.18.65

2、opencv-contrib-python库安装

opencv-contrib-python 是 Opencv 的一个扩展库,它包含了 Opencv 主库之外的额外模块。这些模块通常是一些实验性或高级功能,可能尚未完全成熟或因专利限制等原因未被包含在 Opencv 的主库中。通过安装 opencv-contrib-python,用户可以访问更多的计算机视觉和图像处理功能,扩展 Opencv的能力。

复制代码
pip install opencv-contrib-python==3.4.18.65

三、Opencv 基础操作

1、opencv库的导入

python 复制代码
import cv2

2、读取、展示图片

python 复制代码
img = cv2.imread("./images/img.png")
cv2.imshow("img", img)

3、查看图片信息

python 复制代码
img = cv2.imread("./images/img.png")
cv2.imshow("img", img)
# img.shape查看图片的形状,高、宽、通道数
print("shape:",img.shape)
# 查看图片的像素点个数
print("size:",img.size)
# 查看图片数值的编码格式
print("dtype:",img.dtype)

4、控制图片显示时间、关闭窗口

python 复制代码
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()

cv2.waitKey(),括号里面填入的数值代表图片显示时长,单位为ms。当为0时表示一直存在,按下任意键结束。也可以指定按键关闭窗口,如下所示:

python 复制代码
# 27为键盘上Esc的ASIIC码值
# 此操作一般用在视频的读取中
if cv2.waitKey(1) == 27:
    break

5、读取灰度图

读取图片时,在图片名后加上IMREAD_GRAYSCALE即可以灰度图的形式读取图片

python 复制代码
img_gray = cv2.imread('./images/img.png',IMREAD_GRAYSCALE)
cv2.imshow('img_gray',img_gray)
cv2.waitKey(0)

6、彩色图片转灰度图

如果已经读取了一张图片想转为灰度图,可以用以下方法

python 复制代码
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

7、图片的保存

python 复制代码
cv2.imwrite('保存的图片路径或名称',img)

8、读取视频、摄像头

当cv2.VideoCapture()的括号中为视频路径时读取的是视频,当为0时读取的是本机摄像头,为1、2、3...读取的为外接摄像头。

python 复制代码
Video = cv2.VideoCapture("视频名称或路径")
# 判断视频是否打开
if not Video.isOpened():
    print("无法打开视频")
    exit()

while True:
    # ret为bool值
    ret, frame = Video.read()
    if not ret:
        break
    # 将视频转换为灰度图
    frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    # 显示当前帧
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) == 27:
        break
# 释放视频资源
Video.release()
# 关闭窗口
cv2.destroyAllWindows()

9、图像的区域分割

img[]的中括号中,逗号前的代表图片的高,逗号后的代表宽,图片的(0,0)点在做左上角。

python 复制代码
img2 = cv2.imread('./images/img.png')
# [高,宽]
img_split = img2[100:400,100:500]
cv2.imshow('split',img_split)
cv2.imshow('yuantu',img2)
cv2.waitKey(0)

10、视频的区域分割

使用分割图片的原理同样可以对视频进行操作

python 复制代码
Vedio1 = cv2.VideoCapture('./images/sishi.mp4')
while True:
    ret,frame = Vedio1.read()
    frame_split = frame[0:500,200:700]
    cv2.imshow('split1',frame_split)
    cv2.imshow('yuan',frame)
    cv2.waitKey(10)
    if cv2.waitKey(1) == 27:
        break
Vedio1.release()
cv2.destroyAllWindows()
相关推荐
满怀10154 分钟前
【人工智能核心技术全景解读】从机器学习到深度学习实战
人工智能·python·深度学习·机器学习·tensorflow
Blossom.11812 分钟前
探索边缘计算:赋能物联网的未来
开发语言·人工智能·深度学习·opencv·物联网·机器学习·边缘计算
-曾牛13 分钟前
Spring AI 与 Hugging Face 深度集成:打造高效文本生成应用
java·人工智能·后端·spring·搜索引擎·springai·deepseek
modest —YBW35 分钟前
Ollama+OpenWebUI+docker完整版部署,附带软件下载链接,配置+中文汉化+docker源,适合内网部署,可以局域网使用
人工智能·windows·docker·语言模型·llama
迪捷软件40 分钟前
从概念表达到安全验证:智能驾驶功能迎来系统性规范
大数据·人工智能
非凡ghost44 分钟前
透视相机:创意摄影新体验,解锁照片无限可能
人工智能·数码相机
weixin_307779131 小时前
使用FastAPI微服务在AWS EKS中构建上下文增强型AI问答系统
人工智能·python·云计算·fastapi·aws
智驱力人工智能1 小时前
AI智慧公园管理方案:用科技重塑市民的“夜游体验”
人工智能·科技·安全·边缘计算·视觉分析·人工智能云计算·垂钓检测
说私域2 小时前
线下消费经济“举步维艰”,开源AI智能名片链动2+1+S2B2C小程序线上“狂飙突进”!
人工智能·小程序·开源·零售
深蓝易网2 小时前
深度拆解!MES如何重构生产计划与排产调度全流程?
大数据·运维·人工智能·重构·架构·制造