## 关于OpenCV简介 ##

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。

在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易于上手,让开发人员更多的精力花在算法的设计上。

## OpenCV应用领域 ##

### 1、计算机视觉领域方向 ###

* 1、人机互动

* 2、物体识别

* 3、图像分割

* 4、人脸识别

* 5、动作识别

* 6、运动跟踪

* 7、机器人

* 8、运动分析

* 9、机器视觉

* 10、结构分析

* 11、汽车安全驾驶

### 2、计算机操作底层技术 ###

1. 图像数据的操作: 分配、释放、复制、设置和转换。 图像是视频的输入输出I/O ,文件与摄像头的输入、图像和视频文件输出)。

2.  矩阵和向量的操作以及线性代数的算法程序:矩阵积、解方程、特征值以及奇异值等。

3. 各种动态数据结构:列表、队列、集合、树、图等。

4. 基本的数字图像处理:滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等。

5. 结构分析:连接部件、轮廓处理、距离变换、各自距计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay 三角划分等。

6. 摄像头定标:发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应。

7. 运动分析:光流、运动分割、跟踪。

8. 目标识别:特征法、隐马尔可夫模型:HMM。

9. 基本的GUI:图像与视频显示、键盘和鼠标事件处理、滚动条。

10. 图像标注:线、二次曲线、多边形、画文字。

## 安装OpenCV的的两种方法 ##

1、几点注意事项:

* 安装的时候是 opencv\_python,但在导入的时候采用 import cv2。

* 因为OpenCV依赖一些库,可以在本博客中查找一些依赖库的安装方法,例如安装Numpy方法等,本博客应有尽有!

### T1、使用whl文件法 ###

先去官网[https://www.lfd.uci.edu/~gohlke/pythonlibs/\#opencv][https_www.lfd.uci.edu_gohlke_pythonlibs_opencv],下载相应Python版本的OpenCV的whl文件,如本人下载的opencv\_python‑3.4.1‑cp36‑cp36m‑win\_amd64.whl,然后在whl文件所在目录下,命令 进行安装即可

pip install opencv\_python‑3.4.1‑cp36‑cp36m‑win\_amd64.whl

![70][]

![70 1][]

### T2、直接命令法   ###

pip install opencv-python

![70 2][]

最后,检测安装情况

![70 3][]

哈哈,大功告成!

### T3、Anaconda 环境下安装 ###

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

![20191219124852141.png][]

![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly95dW55YW5pdS5ibG9nLmNzZG4ubmV0_size_16_color_FFFFFF_t_70][]

20191128更新记录

![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly95dW55YW5pdS5ibG9nLmNzZG4ubmV0_size_16_color_FFFFFF_t_70 1][]

## OpenCV常见函数、方法 ##

[Welcome to OpenCV-Python Tutorials’s documentation!][Welcome to OpenCV-Python Tutorials_s documentation]

### 0、基本库函数 ###

**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.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

**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是矩阵的宽和高。

![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly95dW55YW5pdS5ibG9nLmNzZG4ubmV0_size_16_color_FFFFFF_t_70 2][]

### 1、图像基本运算 ###

图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为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

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

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

# 1、PIL.Image转换成OpenCV格式:

import cv2

from PIL import Image

import numpy

path = 'F:/File_Python/Resources/face_images/LZT01.jpg'

img = Image.open(path).convert( "RGB") #.convert("RGB")可不要,默认打开就是RGB

img.show()

#转opencv

#img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)

img = cv2.cvtColor(np.array(img),cv2.COLOR_RGB2BGR)

cv2.imshow( "OpenCV",img)

cv2.waitKey()

# 2、OpenCV转换成PIL.Image格式

import cv2

from PIL import Image

import numpy

img = cv2.imread( 'F:/File_Python/Resources/face_images/LZT01.jpg') # opencv打开的是BRG

cv2.imshow( "OpenCV",img)

image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))

image.show()

cv2.waitKey()

[https_www.lfd.uci.edu_gohlke_pythonlibs_opencv]: https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

[70]: /images/1611458276687.png

[70 1]: /images/1611458251935.png

[70 2]: /images/1611458221995.png

[70 3]: /images/1611458198271.png

[20191219124852141.png]: /images/1611458172026.png

[watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly95dW55YW5pdS5ibG9nLmNzZG4ubmV0_size_16_color_FFFFFF_t_70]: /images/1611458149151.png

[watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly95dW55YW5pdS5ibG9nLmNzZG4ubmV0_size_16_color_FFFFFF_t_70 1]: /images/1611458101553.png

[Welcome to OpenCV-Python Tutorials_s documentation]: https://opencv-python-tutroals.readthedocs.io/en/latest/index.html

[watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly95dW55YW5pdS5ibG9nLmNzZG4ubmV0_size_16_color_FFFFFF_t_70 2]: /images/1611457947545.png

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

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

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

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

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

  3. Python语言学习:python编程之pip命令集合、python调式、头部代码、代码运行等常见概念详细攻略(解决问题为导向)

    Python语言学习:python编程之pip命令集合.python调式.头部代码.代码运行等常见概念详细攻略(解决问题为导向) 目录 一.pip命令集合 1.pip常规命令 1.1  pip下载se ...

  4. Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略

    Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3)).安装.学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略 ...

  5. Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略

    目录 Python语言的简介 1.Python的应用领域 2.Python语言特点.对比其它语言 2.1.Python语言特点 2.2.Python语言对比其它语言 3.Python版本语言兼容问题( ...

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

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

  7. Py之albumentations:albumentations库函数的简介、安装、使用方法之详细攻略

    Py之albumentations:albumentations库函数的简介.安装.使用方法之详细攻略 目录 albumentations库函数的简介 1.albumentations库特点 albu ...

  8. Python:python语言中与时间有关的库函数简介、安装、使用方法之详细攻略

    Python:python语言中与时间有关的库函数简介.安装.使用方法之详细攻略 目录 与时间有关的库函数 案例应用 1.打印程序块前后运行时间 #T1.采用time库

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

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

最新文章

  1. javascript之iframe
  2. Android.bp 语法浅析-Android10.0编译系统(八)
  3. 新视野计算机等级考试官网,计算机二级C语言
  4. x265-创建encdata
  5. Angular jasmine单元测试框架TestBed.createComponent的实现原理
  6. 攻破Win7~Win10 PatchGuard(KPP DSE)【支持Win10 TH1/TH2/RS1/RS2】【WIN64内核越狱】
  7. 程序员笔记 CherryTree 0.99.28 发布
  8. ffmpeg推流到流媒体服务器
  9. [随心译]2017.8.5-你家毛茸茸的宠物的荤粮正在加速气候变化
  10. Yank-Note笔记软件的37个特色功能,值得下载
  11. HashMap为什么线程不安全?
  12. TiDB 在中国电信翼支付的大规模深度实践
  13. HTML班级网站实例(笔记2)
  14. 成功解决ValueError: Only TF native optimizers are supported in Eager mode
  15. 二、VB.NET实现给图片添加文字水印
  16. 记录错误:ImportError: No module named ‘tools‘。jupyter无法import第三方文件夹的库
  17. Shift + 0 不能打出右括号 )打不出来
  18. appfuse 1.9.2 的AOB (面向方面的bug)
  19. TCP与UDP 的区别
  20. 企服三会·PPT | 企业微信陆昊:让每个企业都有自己的微信

热门文章

  1. html文字跳转备注,界面跳转备注.html
  2. LeetCode114. 不同的路径 python实现
  3. boost::system::system_error相关的测试程序
  4. 使用 std::shared_ptr 和 std::unique_ptr 测试 boost/pointer_cast.hpp
  5. boost::mpl模块实现count相关的测试程序
  6. boost::mpi模块对 all_gather() 集体的测试
  7. boost::hana::test::TestRing用法的测试程序
  8. boost::gil::get_num_bits用法的测试程序
  9. GDCM:gdcm::StreamImageWriter的测试程序
  10. GDCM:gdcm::ImageReader的测试程序