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的用法

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

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

    Py之cv2:cv2库(OpenCV,opencv-python)的简介.安装.使用方法(常见函数.方法等)最强详细攻略 目录 关于OpenCV简介 OpenCV应用领域 1.计算机视觉领域方向 2. ...

  2. Python编程语言学习:python中与数字相关的函数(取整等)、案例应用之详细攻略

    Python编程语言学习:python中与数字相关的函数(取整等).案例应用之详细攻略 目录 python中与数字相关的函数 1.对小数进行向上取整 1.1.利用numpy库 1.2.利用math库

  3. Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略

    Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略 目录 pandas中常见的数据类型转换方法 T1.读取时直接转换数据类型 T2.采用astype

  4. c语言opencv所用库函数,Py之cv2:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略...

    ## 关于OpenCV简介 ## OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由 ...

  5. BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略

    BigData:大数据开发的简介.核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS.HBase.Hive}+Docker).经典场景应用之详细攻略 BigData:大数 ...

  6. Cloud Computing:基于无影云电脑利用Python语言实现绘制“可爱小老虎”虎年快乐及无影云电脑简介、应用场景、使用体验(五步快速上手)分享图文教程之详细攻略

    Cloud Computing:基于无影云电脑利用Python语言实现绘制"可爱小老虎"虎年快乐及无影云电脑简介.应用场景.使用体验(五步快速上手)分享图文教程之详细攻略 目录 无 ...

  7. ndarray python 映射_191123 使用 Pybind11 和 OpenCV 创建 Python 库

    参观飞机工厂不能让你学得流体力学,也不能让你学会开飞机.然而如果你会开飞机又懂流体力学,参观飞机工厂可以带给你最大的乐趣和价值.-- 侯捷 献给 @AliceInt-ZLJ by Knight @20 ...

  8. Py之skimage:Python库之skimage的简介、安装、使用方法之详细攻略

    Py之skimage:Python库之skimage的简介.安装.使用方法之详细攻略 目录 skimage的简介 skimage的安装 skimage的使用方法 skimage的简介 skimage即 ...

  9. Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略

    Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略 目录

最新文章

  1. 感觉 Data Access Application Block(DAAB) 里也有可能写得不太好的地方
  2. 编译与部署dubbo管控平台dubbo-admin
  3. Robust 源代码分析之gradle-plugin
  4. P2685 [TJOI2012]桥
  5. 官网mysql安装目录_官网下载MySQL 并安装
  6. rabbitmq 安装 windows
  7. python---windows中的文件路径书写的错误
  8. API文档与模拟数据接口
  9. 身份证号码校验算法(附Python代码)
  10. 微信在服务器上发不了图片大小,为什么微信发不了图片?这四招教你解决难题...
  11. Office - - Excel宏录制批量处理格式相同文件
  12. AI人工智能技术在车载监控系统中有哪些应用?
  13. 英语基础知识: 并列结构
  14. 软件工程毕业设计选题大全 毕设题目推荐
  15. python身份证号码共18位_18位身份证校验
  16. 管理2.0 (3):从粗放到精细化的企业管理升级路
  17. 博客管理系统-软件测试分析报告
  18. web指纹识别-web_finger
  19. 313分的计算机网络专科学校,2021年高考313分左右能上什么大学(100所)
  20. Linux 文件目录压缩与解压命令

热门文章

  1. Xcode11 新建纯代码项目以及运行模拟器黑屏解决
  2. 【护眼色设置】Adobe Acrobat DC / Notepad++ 背景颜色设青苹果绿
  3. JS实现《黑客帝国》落地字母背景
  4. 解决当你的电脑在重新启动更新的时候关机了怎么办
  5. 解决:旧版本的 Boostnote 笔记无法导入到新版本 Boostnote 中
  6. 秒开IPTV服务器 互联网时代新享受
  7. Flex解析JSON
  8. 数字以及字符串的排序
  9. Android高德地图功能总结
  10. mysql查询重复的_MySQL查询重复记录sql语句