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

embedded/2024/12/27 19:34:16/

目录

一、Opencv简介

OpenCV 的主要特点

二、Opencv库安装

opencv-python%E5%BA%93%E5%AE%89%E8%A3%85-toc" style="margin-left:80px;">1、opencv-python库安装

opencv-contrib-python%E5%BA%93%E5%AE%89%E8%A3%85-toc" style="margin-left:80px;">2、opencv-contrib-python库安装

 三、Opencv 基础操作

opencv%E5%BA%93%E7%9A%84%E5%AF%BC%E5%85%A5-toc" style="margin-left:80px;">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库安装

opencv-python%E5%BA%93%E5%AE%89%E8%A3%85">1、opencv-python库安装

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

pip install opencv-python==3.4.18.65

opencv-contrib-python%E5%BA%93%E5%AE%89%E8%A3%85">2、opencv-contrib-python库安装

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

pip install opencv-contrib-python==3.4.18.65

 三、Opencv 基础操作

opencv%E5%BA%93%E7%9A%84%E5%AF%BC%E5%85%A5">1、opencv库的导入

import cv2

2、读取、展示图片

img = cv2.imread("./images/img.png")
cv2.imshow("img", img)

3、查看图片信息

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、控制图片显示时间、关闭窗口

# 控制显示时间
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()

cv2.waitKey(),括号里面填入的数值代表图片显示时长,单位为ms。当为0时表示一直存在,按下任意键结束。

5、读取灰度图

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

img_gray = cv2.imread('./images/img.png',IMREAD_GRAYSCALE)
# img_gray = cv2.imread('./images/img.png',0)
cv2.imshow('img_gray',img_gray)
cv2.waitKey(0)

6、彩色图片转灰度图 

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

img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

 7、图片的保存

cv2.imwrite('保存的图片路径或名称',img)

 8、读取视频、摄像头

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

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)点在做左上角。

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、视频的区域分割

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

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()


http://www.ppmy.cn/embedded/149247.html

相关文章

小程序canvas画环形百分比进度图

组件封装 component/canvas-ring目录下 canvas-ring.js <canvas style"width:{{canvasWidth}}px;height:{{canvasWidth}}px; margin:0 auto;position:relative" type"2d" id"myCanvas"><view class"circle-bar" style&quo…

Element分阶段逐步升级

这里写目录标题 1. 模块划分策略2. 模块化升级的步骤3. 示例&#xff1a;表单模块分阶段升级4. 整体项目的分阶段规划 1. 模块划分策略 在分模块升级之前&#xff0c;必须对项目进行模块化分析。模块可以按以下几种方式划分&#xff1a; 按功能划分 将项目划分为不同的业务模…

Ubuntu下通过Docker部署NGINX服务器

Yo! 大家好&#xff0c;Hitch在此带来一篇关于在Ubuntu下通过Docker部署NGINX服务器的技术博客。废话不多说&#xff0c;让我们直奔主题&#xff01; Docker和NGINX简介 Docker是一个开源的容器化平台&#xff0c;可以轻松创建、部署和运行应用程序。NGINX是一个高性能的Web服…

Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍

前文指路&#xff1a;《Vue零基础教程》&#xff0c;从前端框架到GIS开发系列课程 Vue零基础教程|从前端框架到GIS开发系列课程&#xff08;二&#xff09; Vue零基础教程|从前端框架到GIS开发系列课程&#xff08;三&#xff09;模板语法 Vue零基础教程|从前端框架到GIS开发…

攻防世界 PHP2

开启场景 访问 /index.php&#xff0c;页面无变化 访问 /index.phps index.php 和 index.phps 文件之间的主要区别在于它们的文件扩展名。 index.php&#xff1a;这是一个标准的 PHP 文件&#xff0c;通常用于编写 PHP 代码。当用户访问 index.php 文件时&#xff0c;Web 服务器…

细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV

目录 一、工程配置 1、时钟、DEBUG 2、GPIO 3、SPI2 4、USART6 5、NVIC 二、软件设计 1、FALSH &#xff08;1&#xff09;w25flash.h &#xff08;2&#xff09; w25flash.c 1&#xff09;W25Q16基本操作指令 2&#xff09;计算地址的辅助功能函数 3&#xff09;器…

RK356x bsp 7 - PCF8563 RTC调试记录

文章目录 1、环境介绍2、目标3、PCF85634、dts配置5、内核配置6、测试验证 1、环境介绍 硬件&#xff1a;飞凌ok3568-c开发板 软件&#xff1a;原厂rk356x sdk 2、目标 开发板断电后仍正常计时。 3、PCF8563 PCF8563 是由 NXP Semiconductors 公司生产的低功耗 CMOS 实时…

【Golang 面试题】每日 3 题(五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…