Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)最强详细攻略

article/2025/9/22 16:36:42

Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)最强详细攻略

目录

cv2(OpenCV,opencv-python)库的简介

1、OpenCV应用领域

1.1、计算机视觉领域方向

1.2、计算机操作底层技术

cv2(OpenCV,opencv-python)库的安装

1、安装OpenCV的几种方法

T1、直接命令法  

T2、使用whl文件法

T3、Anaconda 环境下安装

2、测试是否成功

cv2(OpenCV,opencv-python)库的使用方法(常见函数、图像基本运算等)

1、基础函数

1.1、cv2.imread、cv2.imshow、cv2.imwrite、img.copy() 、cv2.resize、cv2.flip、cv2.warpAffine、cv2.putText、cv2.rectangle、cv2.boundingRect等函数

1.2、cvtColor之Opencv2.x和Opencv3.x

2、图像基本运算

3、Image.open 和cv2.imread 的区别及其转换


相关文章
Py之cv2:cv2库(OpenCV)的简介、安装、使用方法(常见函数、方法等)最强详细攻略
CV:计算机视觉技术之图像基础知识(一)—以python的cv2库来了解计算机视觉图像基础(傅里叶变换-频域-时域/各种滤波器-线性-非线性-均值-中值-高斯-双边)
CV:计算机视觉图像的基础知识—以python的cv2库来了解计算机视觉图像基础(边缘检测算子+平滑+轮廓标注+形态学+金字塔+傅里叶变换)—代码实现
CV:计算机视觉技术之图像基础知识(一)—以python的cv2库来了解计算机视觉图像基础—代码实现(图像显示+加文本+变换+通道)—图像基础各种操作(函数及案例)
CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)
CV:利用python的cv2库实现图像数据增强—随机裁剪、随机旋转、随机hsv变换、随机gamma变换代码实现

相关文章(推荐)
CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧

cv2(OpenCV,opencv-python)库的简介

       OpenCV (Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV的建立是为了为计算机视觉应用程序提供一个通用的基础设施,并加速在商业产品中使用机器感知。作为bsd许可的产品,OpenCV使企业可以很容易地利用和修改代码。
       该库有超过2500个优化算法,其中包括经典和最先进的计算机视觉和机器学习算法的综合集。这些算法可以用来检测和识别人脸识别物体、对视频中的人类动作进行分类跟踪相机运动跟踪移动的物体提取物体的3D模型从立体相机中生成3D点云、将图像拼接在一起生成整个场景的高分辨率图像、从图像数据库中查找相似的图像、从使用闪光灯拍摄的图像中去除红眼、跟踪眼球运动识别风景并建立标记,以增强现实覆盖它等。OpenCV拥有超过4.7万人的用户社区,估计下载量超过1800万次。该图书馆广泛用于公司、研究小组和政府机构。
       除了像谷歌、雅虎、微软、英特尔、IBM、索尼、本田、丰田等知名公司都使用了OpenCV库之外,还有许多像Applied Minds、VideoSurf和Zeitera这样的初创公司也广泛使用了OpenCV。OpenCV的应用范围很广泛,从将街景图像拼接在一起,在以色列检测监控视频中的入侵行为,在中国监控矿山设备,在柳树车库帮助机器人导航和拾取物体,在欧洲检测游泳池溺水事故,在西班牙和纽约运行互动艺术,在土耳其检查跑道上的碎片,在世界各地的工厂检查产品标签,在日本快速人脸检测。
       它有c++, Python, Java和MATLAB接口,支持Windows, Linux, Android和Mac OS跨平台计算机视觉库。OpenCV主要倾向于实时视觉应用程序,并在可用时利用MMX和SSE指令。目前正在积极开发功能齐全的cuda和OpenCL接口。有超过500种算法,组成或支持这些算法的函数数量大约是这些算法的10倍。OpenCV是用c++原生编写的,它有一个模板化接口,可以与STL容器无缝地工作。
       它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。 
       在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易于上手,让开发人员更多的精力花在算法的设计上

官方网站:https://opencv.org/

1、OpenCV应用领域

1.1、计算机视觉领域方向

  • 人机互动
  • 物体识别
  • 图像分割
  • 人脸识别
  • 动作识别
  • 运动跟踪
  • 机器人
  • 运动分析
  • 机器视觉
  • 结构分析
  • 汽车安全驾驶

1.2、计算机操作底层技术

  • 图像数据的操作: 分配、释放、复制、设置和转换。 图像是视频的输入输出I/O ,文件与摄像头的输入、图像和视频文件输出)。
  •  矩阵和向量的操作以及线性代数的算法程序:矩阵积、解方程、特征值以及奇异值等。
  • 各种动态数据结构:列表、队列、集合、树、图等。 
  • 基本的数字图像处理:滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等。 
  • 结构分析:连接部件、轮廓处理、距离变换、各自距计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay 三角划分等。 
  • 摄像头定标:发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应。
  • 运动分析:光流、运动分割、跟踪。 
  • 目标识别:特征法、隐马尔可夫模型:HMM。
  • 基本的GUI:图像与视频显示、键盘和鼠标事件处理、滚动条。 
  • 图像标注:线、二次曲线、多边形、画文字。

cv2(OpenCV,opencv-python)库的安装

1、安装OpenCV的几种方法

安装OpenCV的经验总结与注意事项:

  • 安装的时候是 opencv_python,但在导入的时候采用 import cv2。
  • 因为OpenCV依赖一些库,可以在本博客中查找一些依赖库的安装方法,例如安装Numpy方法等,本博客应有尽有!

T1、直接命令法  

pip install opencv-python  

T2、使用whl文件法

第一步,官网下载whl文件。https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv,下载相应Python版本的OpenCV的whl文件,比如如本人下载的为opencv_python‑3.4.1‑cp36‑cp36m‑win_amd64.whl
第二步,pip命令安装。在whl文件所在目录下,命令 进行安装即可

pip install opencv_python‑3.4.1‑cp36‑cp36m‑win_amd64.whl

T3、Anaconda 环境下安装

pip install opencv-python
conda install opencv-python      //Anaconda 环境下安装,先打开Anaconda Prompt,再输入本命令进行安装!

20191128更新记录

2、测试是否成功

最后,检测安装情况

import cv2

哈哈,大功告成!

cv2(OpenCV,opencv-python)库的使用方法(常见函数、图像基本运算等)

Welcome to OpenCV-Python Tutorials’s documentation!
CV:计算机视觉图像的基础知识—以python的cv2库来了解计算机视觉图像基础

1、基础函数

1.1、cv2.imread、cv2.imshow、cv2.imwrite、img.copy() 、cv2.resize、cv2.flip、cv2.warpAffine、cv2.putText、cv2.rectangle、cv2.boundingRect等函数

cv2.imread(filepath,flags)     #读入一张图像

  • filepath:要读入图片的完整路径
  • flags:读入图片的标志 
    • cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
    • cv2.IMREAD_GRAYSCALE:读入灰度图片
    • cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道

cv2.imshow(wname,img)     #显示图像

  • 第一个参数是显示图像的窗口的名字
  • 第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小
cv2.imshow('image',img)
cv2.waitKey(0)   #等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。
#若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindow()     #销毁所有窗口
cv2.destroyWindow(wname)   #销毁指定窗口

cv2.imwrite(file,img,num)    #保存一张图像

  • 第一个参数是要保存的文件名
  • 第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95。
  • 第三个参数表示的是压缩级别。默认为3.

img.copy()    #图像复制

cv2.resize(image, image2,dsize)     #图像缩放:(输入原始图像,输出新图像,图像的大小)

cv2.flip(img,flipcode)                       #图像翻转,flipcode控制翻转效果。

  • flipcode = 0:沿x轴翻转;flipcode > 0:沿y轴翻转;flipcode < 0:x,y轴同时翻转

cv2.warpAffine(img, M, (400, 600))       #图像仿射变换 :平移;裁剪、剪切、旋转、仿射变换
M、M_crop、M_shear、M_rotate

cv2.putText(img,'text',(50,150)      #图像添加文字:(照片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细)

cv2.putText(image, caption, (b[0], b[1] - 10), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), 1)
cv2.putText(I,'there 0 error(s):',(50,150),cv2.FONT_HERSHEY_COMPLEX,6,(0,0,255),25)

cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)    #画出矩行:img原图、(x,y)是矩阵的左上点坐标、(x+w,y+h)是矩阵的右下点坐标、(0,255,0)是画线对应的rgb颜色、2是所画的线的宽度。

cv2.boundingRect(img)          #返回图像的四值属性:img是一个二值图,即是它的参数; 返回四个值,分别是x,y,w,h; x,y是矩阵左上点的坐标,w,h是矩阵的宽和高。

1.2、cvtColor之Opencv2.x和Opencv3.x

cv2.cvtColor()      #图像颜色空间转换

  • img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)   #灰度化:彩色图像转为灰度图像
  • img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)   #彩色化:灰度图像转为彩色图像
  • # cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS

2、图像基本运算

     图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。
bitwise_and、bitwise_or、bitwise_xor、bitwise_not四个按位操作函数,是将基础数学运算应用于图像像素的处理中。

bitwise_and、bitwise_or、bitwise_xor、bitwise_not这四个按位操作函数。
void bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 & src2
void bitwise_or(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 | src2
void bitwise_xor(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 ^ src2
void bitwise_not(InputArray src, OutputArray dst,InputArray mask=noArray());//dst = ~src
  • bitwise_and():是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0
  • bitwise_or():是对二进制数据进行“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作,1|1=1,1|0=0,0|1=0,0|0=0
  • bitwise_xor():是对二进制数据进行“异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,1^1=0,1^0=1,0^1=1,0^0=0
  • bitwise_not():是对二进制数据进行“非”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,~1=0,~0=1

3、Image.open 和cv2.imread 的区别及其转换

Image.open 打开来的图像格式,cv2.imread  读出来是像素格式。

CV:Image.open 和cv2.imread的简介、区别及PIL.Image格式/OpenCV格式相互转换代码实现之详细攻略
 

相关应用:CV:利用python的cv2库实现图像数据增强—随机裁剪、随机旋转、随机hsv变换、随机gamma变换代码实现

参考文章
OpenCV之bitwise_and、bitwise_not等图像基本运算及掩膜
模块cv2的用法
 


http://chatgpt.dhexx.cn/article/aa9mchZT.shtml

相关文章

常用的SQL语句

删除数据库中表的某些相同的某些记录 OR 查找数据库的表中的相同记录 一、删除数据库中表的某些相同的某些记录 delete from tablename where only_Id not in(select min(only_id) from tablename group by sameName) 二、选出相同记录的SQL语句 AND 删除相同记录的SQL语句…

数据库基础(常用SQL语句)

一、数据库级及SQL语言简介 1、目前主流数据库 微软&#xff1a;sql server、access 瑞典&#xff1a;mysql ibm: db2 sybase:sybase ibm: informix oracle: oracle 2、SQL语言 DQL-------------数据查询语言 select … From … Where DML-------------数据操纵语言 insert、…

SQL基本语句(整理)

一、DDL(Data Definition Language) 数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库&#xff0c;表&#xff0c;字段&#xff09; ①查询 查询所有数据库 show databases; 查询当前数据库 select database(); ②创建 create database [if not exists] 数…

SQL常用语句(基础篇)

SQL常用语句&#xff08;基础篇) 说明&#xff1a;创建数据库 CREATE DATABASE database-name 说明&#xff1a;删除数据库 drop database dbname 说明&#xff1a;备份sql server —创建备份数据的device USE master EXEC sp_addumpdevice ‘disk’&#xff0c;‘testBac…

SQL最常用的语句

语法&#xff1a; 一步步由浅到深&#xff0c;这里用的都是mysql做的。 基础&#xff1a; 连接数据库&#xff1a; mysql -h10.20.66.32 -uroot -p123456 1 -h后面是mysqlServer所在地址&#xff0c;-u后面是用户名&#xff0c;-p后面是密码。 查看数据库 show database…

数据库常用sql语句总结

查看时右侧可以打开CSDN自带的目录&#xff0c;方便查看 目录 一、基础 1.SELECT 语句 2.SELECT DISTINCT 语句 3.WHERE 子句 4.AND 和 OR 运算符 5.ORDER BY 语句 6.INSERT INTO 语句 7.Update 语句 8.DELETE 语句 二、高级 1.TOP 子句 2.LIKE 操作符 3.SQL 通配…

10个必须掌握的SQL常用语句

世界上70%的相关性数据可以被储存为表格数据&#xff0c;即类似Excel&#xff0c;Csv类型的数据&#xff0c;如何去查询和分析相关性的数据&#xff1f;对于少量数据&#xff0c;我们可以使用Excel&#xff0c;更多一点数据&#xff0c;我们可以使用Python, pandas 处理大数据 …

从零开始USRP+GNRRADIO系列(基础入门篇和C++自定义模块)

从零开始USRPGNRRADIO系列&#xff08;基础入门篇&#xff09; 文章目录 从零开始USRPGNRRADIO系列&#xff08;基础入门篇&#xff09;usrp简介创建第一个usrp图C自定义模块 usrp简介 通用软件无线电外设&#xff08;USRP&#xff09;是由Ettus Research及其母公司National I…

入门学习计算机第十八天——自定义数据类型(结构体)

入门学习计算机第十八天——自定义数据类型&#xff08;结构体&#xff09; 编译器&#xff1a;Microsoft Visual Studio 2019 自定义类型&#xff1a; 结构体枚举联合体 结构体 结构体类型的声明 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量 结构的…

【计算机基础】

文章目录 线程、协程的状态 计算机网络DNS解析 计算机基础进程间通讯的7种方式讲一下程序的虚拟内存、常驻内存和逻辑内存。堆和栈是存啥的&#xff1f;什么是大小端? 什么是死锁&#xff1f;什么情况下会发生&#xff08;避免&#xff09;死锁&#xff1f;死锁产生的4个必要条…

计算机基础(1)

目录 一、计算机发展 1.1计算机发展史 1.2计算机分类 1.2.1按规模划分 1.2.2服务器与客户机 1.2.2.1 服务器按外形分类 1.3服务器硬件 一、计算机发展 1.1计算机发展史 1、第一代计算机(1946-1957) 电子管时代 冯诺依曼体系结构&#xff1a;数字计算机的数制采用二进…

计算机基础介绍

1、组成部分 中央处理器、内存、存储设备、输入/输出设备、通信设备&#xff08;各部分通过总线来连接&#xff09; 2、冯诺依曼体系结构&#xff1a;现代计算机的基础 3、中央处理器&#xff08;CPU&#xff09;——计算机的大脑 &#xff08;1&#xff09;作用&#xff1a…

C语言基础入门——自定义类型

学习目标&#xff1a; 学习并了解C语言自定义类型 目录 学习目标&#xff1a; 一、结构体 ●结构体的声明 ●结构体的引用 ●结构体的定义和初始化 ●结构体的内存对齐 ●结构体的传参 ●结构体的位段&#xff08;位段的可填充和可移植性&#xff09; 二、枚举 ●枚举的定…

1.计算机基础

目录 1.1计算机系统 1.3 计算机硬件 1.4 计算机常用计数制 1.5 数据表示 1.1计算机系统 计算机多种形式&#xff1a;电脑&#xff0c;笔记本&#xff0c;智能手机&#xff0c;服务器等&#xff1b; 两部分组成&#xff1a;硬件系统和软件系统。 1.1.1 世界上第一台计算机 世…

一、计算机基础

计算机基础 一、第 1 章 计算机基础知识1-1 计算机概述1-1-1 计算机的产生与发展&#xff08;一&#xff09;计算工具的发展&#xff08;二&#xff09;现代计算机的发展&#xff08;三&#xff09;计算机的分代&#xff08;四&#xff09;计算机新技术的发展 1-1-2 计算机的特…

计算机基础及入门

1、计算机基本概念 1.1、计算机是什么 计算机&#xff08;computer&#xff09;&#xff1a; 俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器 特点&#xff1a; 数值计算&#xff1b;逻辑计算&#xff1b;存储记忆&#xff1b;能按照程序运行、自动、高速处理处理…

计算机基础入门

说明&#xff1a;计算机包含硬件(hardware)和软件(software)两部分。 计算机分为6大硬件&#xff1a; 1.CPU 即中央处理器&#xff08;central processing unit&#xff0c;简称CPU&#xff09;作为计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元。…

计算机基础的介绍

计算机概念 这是一个家用计算机的硬件和软件组成&#xff1a; 计算机软件代码最基层 — 固件&#xff0c;在计算机首次启动时由处理器运行一些引导加载程序&#xff0c;比如从U盘、光盘等读取操作 系统。这些程序永久储存在计算机内存中&#xff0c;所以称作固件。嵌入式操作…

计算机基础

文章目录 一、数据结构1. 排序算法快排归并排序堆 2. 结构堆和栈区别数组与链表数据库相关的B树、B树跳表LSM树红黑树前缀树 二、Java基础0 基础问题1. 抽象类和接口的区别2. final关键字、内部类、static3. 多态4. 成员变量和局部变量5. String类、StringBuilder类6. Java集合…

计算机基础知识——基础入门(一)

目录 CPU 一、CPU是什么 二、CPU 实际做什么 三、CPU 的内部结构 CPU 是寄存器的集合体 四、CPU 指令执行过程 内存 一、什么是内存 二、内存的物理结构 内存的读写过程 内存的现实模型 三、内存的使用 指针 数组是内存的实现 栈和队列 链表 二叉树 磁盘 认…