OpenCV一个用于图像和照相机中对象识别的库

开放简历

OpenCV的 是一个免费的跨平台机器视觉库 (适用于GNU / Linux,Mac OS X,Windows和Android的现有版本) 由英特尔开发并用于无数应用中从带有运动检测的安全系统到需要对象识别的过程控制应用。 这是因为其出版物是根据BSD许可提供的,因此可以在其中注明的条件下将其免费用于商业和研究目的。

公开简历 包含500多种功能,涵盖视觉过程中的各个领域, 例如对象识别(面部识别),相机校准,立体视觉,机器人视觉,对视频中的动作进行分类,转换图像,提取3D模型,从立体相机图像创建3D空间,并通过组合低质量的图像来创建高质量的图像。

提供搜索相似对象图像的功能 通过应用机器学习方法,组织标记,识别不同图像中的常见元素,自动消除诸如红眼之类的缺陷来呈现元素集。

OpenCV提供了2500多种算法, 既经典又反映了计算机视觉和机器学习系统领域的最新成就。 库代码用C ++编写,并在BSD许可下分发。

关于新版本OpenCV 4.2

现在 该库是其OpenCV 4.2版本,其中 在DNN模块中 (深度神经网络)结合基于神经网络的机器学习算法的实现, 添加了一个后端以使用CUDA 并实现了对nGraph OpenVINO API的实验支持。

除了使用SIMD指令之外,我们还优化了立体声输出(StereoBM / StereoSGBM),调整大小,蒙版,旋转,计算缺失的颜色分量以及许多其他操作的代码性能。

在G-API模块中 (opencv_gapi), 作为处理引擎 使用基于图形的算法进行高效成像,支持用于计算机视觉和深度机器学习的更复杂的混合算法。 提供对英特尔推理引擎的支持。 在执行模型中增加了对视频流处理的支持。

还修复了可能通过处理XML,YAML和JSON格式的未验证数据来导致攻击代码执行的漏洞(CVE-2019-5063,CVE-2019-5064)。 如果在JSON解析期间发现具有空代码的字符,则将整个值复制到缓冲区,但没有适当验证分配的内存区域的限制。

其他变化 在此新版本中呈现:

  • 添加了pyrDown函数的多线程实现。
  • 添加了使用基于FFmpeg的视频后端从媒体容器提取视频流(解复用)的功能。
  • 添加了一种算法,可以对受损的FSR(频率选择性重建)图像进行快速的频率选择性重建。
  • 添加了RIC方法来对典型空白区域进行插值。
  • 添加了LOGOS偏差归一化方法。

如何安装OpenCV 4.2?

对于那些有兴趣安装此库的人, 可以获得新版本 以及查阅与使用有关的信息,甚至可以从其官方网站上找到教程。

链接是这个。

在这篇文章中 我们将提供能够在Raspberry pi上实现该库的步骤。

在Raspberry P上安装OpenCV我必须拥有您的系统,即Raspbian。

从v我们将要打开一个终端,并在其中键入 以下命令可用于安装依赖项,开发人员工具,映像包以及其他附加库:

sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran libhdf5-dev libhdf5-serial-dev libhdf5-103 libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5

最后, 让我们安装Python 3标头文件 这样我们就可以编译OpenCV了:

sudo apt-get install python3-dev

现在 让我们创建一个Python环境 使用以下命令,以使站点隔离:

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
sudo rm -rf ~/.cache/pip

我们将安装virtualenv和virtualenvwrapper:

sudo pip install virtualenv virtualenvwrapper
nano ~/.bashrc

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

source /usr/local/bin/virtualenvwrapper.sh
source ~/.bashrc
mkvirtualenv cv -p python3
pip install "picamera[array]"

现在做这个 我们将使用以下命令编译openCV:

cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-4.2.0 opencv
mv opencv_contrib-4.2.0 opencv_contrib

现在,我们将增加系统中的交换,因为如果我们将其保留为默认状态,则系统会挂起:

sudo nano /etc/dphys-swapfile

我们将编辑CONF_SWAPSIZE变量:

CONF_SWAPSIZE=1024

我们使用ctrl + o和ctrl + x保存并关闭。 然后我们输入:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

现在,我们将继续进行编译:

workon cv
pip install numpy
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D CMAKE_SHARED_LINKER_FLAGS=-latomic \
-D BUILD_EXAMPLES=OFF ..
make -j4
sudo make install
sudo ldconfig
cd /usr/local/lib/python3.7/site-packages/cv2/python-3.7
sudo mv cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so
cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.so cv2.so

准备好了