Python OpenCV 基础教程

环境安装中 opencv、opencv3、opencv-python的区别 只有在需要特定版本或自定义功能时,您才需要考虑手动安装 "opencv" 或 "opencv3" 并进行自定义编译和配置。"opencv-python" 是 OpenCV 的官方 Python 绑定,提供了对 OpenCV 库的 Python 接口。安装 "opencv3" 可能需要从源代码构建,类似于 "opencv"。在 Python 中使用 OpenCV,您通常需要将其绑定到 Python,这可以通过安装 Python 的 "opencv-python" 包来实现。 阅读详情

Python OpenCV基础教程

1. 简介

2. 安装

conda install opencv

3. 使用

3.1 图像操作:加载,显示,保存

3.1.1 读入图像:cv2.imread()

调用:cv2模块

init def imread(filename, flags=None):

从文件中加载图像。

函数imread从指定的文件加载图像并返回它。如果图像不能读取(由于缺少文件、不正确的权限、不支持或无效格式),该函数返回一个空矩阵(Mat::data=null)

目前,支持以下文件格式:

. Windows位图-*.bmp,*.dib(始终支持)

. -JPEG文件-.jpeg,.jpg,.jpe(参见Notes *部分)

. -JPEG 2000文件-**JP2(见*Notes *部分)

. -便携式网络图形-.pNG(见Notes *部分)

. - WebP -*.Webp(见**注释部分)

. -便携式图像格式-**PBM,*.PGM,*ppm .pxm,.pnm(始终支持)

. -太阳光栅-*.Sr,*.ras(始终支持)

. -TIFF文件-.TIFF,**TIF(见Notes *部分)

. - OpenXR图像文件-**EXR(参见*Notes *部分)

. -辐射HDR - .HDR,.PIC(始终支持)

. GDAL支持的栅格和矢量地理空间数据(参见*注释部分)

参数filename :该参数制定图片的路径,可以使用相对路径,也可以使用绝对路径;

参数flags:指定以何种方式加载图片,有三个取值:

  1. cv2.IMREAD_COLOR:读取一副彩色图片,图片的透明度会被忽略,默认为该值,实际取值为1;
  2. cv2.IMREAD_GRAYSCALE;以灰度模式读取一张图片,实际取值为0
  3. cv2.IMREAD_UNCHANGED:加载一副彩色图像,透明度不会被忽略。

返回值:

实例:

import cv2
# 加载图片,以彩色模式读取图片
img = cv2.imread("pic0.jpg",flags=cv2.IMREAD_COLOR)

注意:

图片的地址不能有中文,最好全是英文的,否则会无法打开图片,获取的值为None


3.1.2 显示图像:cv2.imshow()

调用:cv2模块

在__init__模块中的定义:def imshow(winname, mat)

在指定的窗口中显示图像

参数winame:一个字符串,表示创建的窗口名字,每一个窗口必须有一个唯一的名字;

参数mat:是一个图片矩阵,numpy.ndarray类型

返回值:无

实例:

import cv2
# 加载图片
img = cv2.imread("pic0.jpg",flags=cv2.IMREAD_COLOR)
# 显示图片,
cv2.imshow('image', img)
# 等待键盘输入,在执行后面操作。如果没有这一步,图片会一闪而过
cv2.waitKey(0)
#删除建立的全部窗口
cv2.destroyAllWindows()

在图片显示的过程中,通常会伴随几个其他的函数,他们分别是:

  • cv2.waitKey()
  • cv2.destroyAllWindows()
  • cv2.destroyWindow()
  • cv2.namedWindow()

因为我们的程序是顺序执行,如果没有cv2.waitKey()函数,图像不会显示(也许是一闪而过,我们人眼观察不到),cv2.waitKey()函数是一个键盘绑定函数(相当于让程序在这里挂起暂停执行),他接受一个单位为毫秒的时间,它等待指定时间的键盘事件,在指定时间内发生了键盘事件,程序继续执行,否则必须等到时间结束才能继续执行,参数如果为0表示等待无限长的事件。

cv2.destroyAllWindows()用来销毁所有已经创建的窗口, 如果需要销毁指定窗口使用cv2.destroyWindow()函数,他接受一个表示窗口名字的名字。

在这里我们直接用cv2.imshow()创建的窗口是自动适应图片大小的,不能缩放,如果我们想放大缩小窗口,必须单独用cv2.namedWindow(),并通过flag参数指定窗口模式为cv2.WINDOW_NORMAL,默认为cv2.WINDOW_AUTOSIZE.

3.1.2.1 cv2.waitKey() 键盘绑定参数
3.1.2.2 cv2.destroyAllWindow() :删除所有的窗口

3.1.3 保存图像:cv2.imwrite()

调用: cv2模块

在__init__模块中的定义:def imwrite(filename, img, params=None)

保存照片

参数filename: 保存文件的路径名

参数img: 表示图像的numpy.ndarray对象

返回值:无

实例:

import cv2
# 复制图片
cv2.imread("pic.jpg")
cv2.imwrite("pic1.jpg",img)

3.1.4 创建窗口,在加载图像,可调整大小:cv2.namedWindow()

调用: cv2模块

在__init__模块中的定义:def namedWindow(winname, flags=None)

创建一个窗口:

一种特殊的情况是,你也可以县创建爱你一个窗口,之后再加载图像,这种情况下, 你可以决定窗口是否可以调整大小,使用到的函数是cv2.nameWindow()。初始设定函数标签是cv2.WINDOW_AUTOSIZE。但是如果你把标签改成cv2.WINDOW_NORMAL,你就可以调整窗口大小了,当图像维度太大,或者要添加轨迹条时,调整窗口大小将会很有用

参数winname:窗口名称

参数flags: 窗口的标志

实例:

import cv2
# 创建一个名为Image2的窗口
cv2.n
在Mac 上安装opencv和python 折腾了很长时间,终于搞定。问题的症结在于mac安装了多种版本的python。 言归正传,说明安装步骤。 首先,利用macports安装cmake和numpy。在此过程中会顺道安装python。 然后,在官网上下载源码包解压,执行如下 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PRE 阅读详情

相关推荐

python-OpenCV基础

pts.reshape((-1,1,2)) 将 pts 变量转换为一个三维数组,其中第一维的大小由原始数组中的元素数量自动计算,第二维和第三维的大小分别为 1 和 2。,它的参数表示暂停时间,所以这个值越大,视频播放速度越慢,反之,播放速度越快,通常设置为 25 或 30。thickness:线宽,默认为1,对于矩形/圆之类的封闭形状而言,传入-1表示填充形状。自适应阙值会每次取图片的一小部分计算阙值,这样图片不同区域的阙值就不尽相同。函数.注意:最后一个参数线宽=-1,表示为实心的。

2301_81204861的博客 5420

OpenCV-Python: 强大的计算机视觉库

OpenCV-Python是一个强大的计算机视觉库,为Python开发者提供了丰富的功能和支持。它可以用于图像处理、对象检测、人脸识别、视频分析等多个领域。通过学习和使用OpenCV-Python,您可以快速开发出各种基于计算机视觉的应用程序。无论是初学者还是专业开发者,OpenCV-Python都是一个非常有价值的工具,值得学习和掌握。

AIGC搞起 5595

在Ubuntu上安装opencv-python

python2和python3没太大区别, python2在虚拟环境配置上可能会有问题. 此处以安装opencv4为例(opencv4比opencv3能更好的的支持深度神经网络) 安装开发工具: sudo apt-get install build-essential cmake unzip pkg-config 安装图片和视频的I/O库, 保证可以从磁盘中读取图像和视频 sudo apt-ge...

cxw的博客 4146

OpenCV 之 Python API

学习Python和OpenCV, 用gAWK抽出OpenCV函数方便查找, 从《The OpenCV Reference Manual, Release 2.4.8.0 》 输出: 章节行     函数行         页码 以下文字自动生成,很是粗糙,需要的看。 谁添加完注释记得回传一份  2.1 Basic Structures   2.2 Basic C St

northelec的专栏 1万+

python 离线安装opencv_python环境下安装opencv库的方法

注意:安装opencv之前需要先安装numpy,matplotlib等一、安装方法方法一、在线安装1.先安装opencv-pythonpip install opencv-python --user 我的python版本是3.6.8,可以看到opencv安装的默认版本是 opencv_python-4.1.0.25-cp36-cp36m-win_amd64.whl2.再安装opencv-cont...

weixin_29023805的博客 4500

OpenCV-Python图像处理实用工具函数及调用介绍

OpenCV 是一款广泛应用于计算机视觉和图像处理的开源库,Python 是其中一个常用的编程语言。结合 Python 和 OpenCV 的优点,可以灵活地对图像及视频数据进行处理。在这篇文章中,我将介绍一些 OpenCV-Python 实用的工具函数和调用方法。以上就是 OpenCV-Python 中常见的几个工具函数和调用方法。通过这些函数,我们可以对图像进行读取、显示、转换、缩放、裁剪、滤波和边缘检测等处理。OpenCV-Python图像处理实用工具函数及调用介绍。

2301_78484069的博客 220

保姆级教程:用YOLOv8n模型在RKNN和Horizon平台完成目标检测(附C++部署代码与性能实测)

本文提供了一份详尽的YOLOv8n模型在RKNN和Horizon平台上的部署指南,涵盖环境配置、模型优化、跨平台适配及性能调优。通过实战案例和C++部署代码,帮助开发者在嵌入式设备上高效实现目标检测,显著提升推理性能。

weixin_42659194的博客 468

28-基于STM32单片机的便携式健康监测系统设计与实现(程序+原理图+元件清单)

本文详细介绍了基于STM32单片机的便携式健康监测系统设计与实现,该系统集成MAX30102光电传感器和MSP20压力传感器,实时监测心率、血氧和血压等关键生理指标。通过STM32F103C8T6主控芯片和HC-05蓝牙模块,实现数据采集、处理及无线传输,具有便携性高、操作简便等特点,适用于家庭健康监护和户外运动场景。

weixin_29191669的博客 420

AniME框架深度体验:用AI自动生成《修真小说》动画全流程记录

本文详细记录了使用开源多智能体框架AniME,结合其核心动画生成模型AniSora V3,将一段修真小说文本自动转化为风格统一动画视频的全流程实战。文章深入解析了从环境搭建、导演智能体任务分解,到多智能体协作生成分镜、角色、动画及最终合成的每一步操作与挑战,为AI驱动的长视频创作提供了宝贵的实践经验与流程优化思路。

ol789012345的博客 624

快手极速版抓包实战:安卓/iOS双端获取client_salt全流程解析(避坑指南)

本文详细解析了在安卓和iOS平台上获取快手极速版关键参数`client_salt`的全流程,包括环境配置、抓包工具使用、参数识别与转换等实战技巧。特别针对双端差异和反抓包机制提供了避坑指南,帮助开发者高效安全地完成数据获取任务。

weixin_29021195的博客 712

药物吸收仿真软件:Caco-2_(9).Caco-2模型在药物开发中的案例分析

通过以上五个案例,我们可以看到Caco-2模型在药物开发中的重要作用。它不仅能够帮助我们预测药物的肠道吸收情况,还能够用于优化药物配方、评估代谢稳定性、研究药物相互作用以及转运蛋白的影响。这些体外实验和仿真分析的结果为药物的进一步临床研究提供了重要的参考依据,有助于缩短药物开发周期,提高研发效率。

kkchenjj的博客 863

【maven】maven 3.8.1 版本编译java 17的项目报错 java.lang.ExceptionInitializerError to make field private com.s

排查发现一切正常,但是内网就是不行,然后我就想把我的程序从java 11 改成java 17,然后执行编译的时候报错。这个问题是我们内网java代码升级,项目比较复杂,是从java 8 升级到java 17,然后报错。maven-compiler-plugin 3.8.1 版本编译java 17的项目,报错。然后查看一下这个项目的lombok,结果发现还是老的版本。怀疑是不是这个问题呢?使用最新的版本就可以了。

九师兄 780

ARM功耗管理软件之DVFS&AVS

思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS?

AI-安全-功耗 1230

高空抛物监控系统:基于YOLOv8的轨迹追踪与可视化系统

本文详细介绍了一种基于YOLOv8深度学习模型的高空抛物监控系统,该系统能够实时检测并追踪高层建筑抛掷物的运动轨迹。文章包含完整的系统设计思路、算法实现细节、数据集构建方法以及基于PyQt5的可视化界面开发过程。我们提供了完整的Python实现代码,并讨论了系统的性能优化策略和实际部署考量。此外,我们还推荐了几个公开可用的高空抛物数据集,并详细分析了系统的应用前景和技术挑战。

YOLO 446

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: TensoFlow 实现 VAE(变分自编码)神经网络
下一篇: opencv 打开摄像头
dongyangY
博客等级 码龄11年 64粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值