目录
3. 运行 Demo (OpenCV for Delphi)
OpenCV 是世界上最大的计算机视觉库。
它是开源的,包含 2500 多种算法,由非营利性开源视觉基金会运营。
关于OpenCV,熟悉python或者C++语言的可能更容易理解,因为官方就直接支持python和C++语言,但是如果Delphi语言想使用,可就不是那么方便了。
OpenCV名气有多大我就不多说了,OpenCV(开源计算机视觉库:http://opencv.org)是一个开源库,其中包含数百种计算机视觉算法。该算法几乎涵盖了计算机视觉处理的方方面面。
从本系列文章开始,我打算介绍下Delphi语言如何使用OpenCV。
一、OpenCV 功能模块
OpenCV 采用模块化结构,这意味着软件包包含多个共享库或静态库。具体包括以下模块:
- 核心功能(core)--定义基本数据结构的紧凑型模块,包括密集多维数组 Mat 和所有其他模块使用的基本功能。
- 图像处理(imgproc)--图像处理模块,包括线性和非线性图像过滤、几何图像变换(调整大小、仿射和透视扭曲、基于通用表的重映射)、色彩空间转换、直方图等。
- 视频分析(视频)--视频分析模块,包括运动估计、背景减除和物体跟踪算法。
- 相机校准和三维重建(calib3d)--基本的多视角几何算法、单相机和立体相机校准、物体姿态估计、立体对应算法和三维重建元素。
- 二维特征框架(features2d) - 突出特征检测器、描述符和描述符匹配器。
- 对象检测(objdetect)--检测对象和预定义类别的实例(例如,人脸、眼睛、杯子、人、汽车等)。
- 高级图形用户界面 (highgui) - 简单用户界面功能的易用界面。
- 视频 I/O (videoio) - 视频捕捉和视频编解码器的易用界面。
... 其他一些辅助模块,如 FLANN 和 Google 测试包装器、Python 绑定等。
二、Delphi 中使用OpenCV
众所周知的原因,Delphi使用很多开源库都非常困难,包括使用腾讯、阿里云等等平台的API都比较困难,因为这些平台等都不提供Delphi相关的Demo,那么只能自己根据C或者Java的Demo来进行相关翻译。对于OpenCV,因为其官方提供的是C++的开源代码,Delphi想使用,就只能是用C++的编译器编译成DLL(Windows上,事实上OpenCV也是支持Linux和MAC等),好在官方提供了编译好的DLL共类似Delphi语言使用。
目前(2024-05-07)OpenCV的版本是4.9,理论上讲,使用官方提供的最新的DLL是没有问题的,可是遗憾的是,由于OpenCV的库实在太大,函数实在太多,而且是用C++语言写的,同时很多数据结构原生Delphi中并没有,这就必须要有相关的搭桥封装库来提供转接,目前版本比较新而且功能相对完善的就是 Delphi-OpenCV-Class 本文也就是基于这个封装来介绍。Delphi-OpenCV-Class 是支持到OpenCV 4.7。
三、OpenCV 4.7 Delphi开发环境配置
使用 Delphi-OpenCV-Class 首先需要配置好开发环境,然后才能进行开发。
- 支持Delphi版本:实际上D12也可以使用,本系列文章使用的是D12
- 第一步:下载 Delphi-OpenCV-Class 下载完后进行安装,如果网络不好,请从这里下载。
- 第二步,下载 OpenCV 4.70 下载完后进行安装,如果网络不好, 请从这里下载。
安装好 Delphi-OpenCV-Class 后,将会在安装目录的<project>\bin\目录下找到如下文件,注意这里的 <project> 表示的是 Delphi-OpenCV-Class 的安装目录。
序号 | 文件 | 说明 |
1 | opencv_delphi470.dll | Release 使用 |
2 | opencv_delphi470d.dll | Debug使用 |
安装好 OpenCV 4.70 后,将会在<opencv>\build\x64\vc16\bin\目录下找到如下文件, 注意这里的 <project> 表示的是 OpenCV 4.70 的安装目录。
序号 | 文件 | 说明 |
1 | opencv_videoio_ffmpeg470_64.dll | Release 使用 |
2 | opencv_videoio_msmf470_64.dll | Release 使用 |
3 | opencv_world470.dll | Release 使用 |
4 | opencv_videoio_msmf470_64d.dll | Debug 使用 |
5 | opencv_world470d.dll | Debug 使用 |
1. 环境配置
假如 Delphi-OpenCV-Class 安装在 D:\Delphi-OpenCV-Class-main,那么需要在Delphi 的IDE 中设置好库路径:
编译好程序后,需要将以上所有的DLL文件拷贝执行文件的目录,就可以正常执行。
2. OpenCV 中Demo程序的编译配置
加入OpenCV安装在 D:\OpenCV470\opencv 目录下。
在D:\Delphi-OpenCV-Class-main\source目录下找到cv.resource.pas这个文件,然后修改其OpenCVRootPath 常量指定到OpenCV的安装目录。
interface
const
OpenCVRootPath = 'D:\OpenCV470\opencv\'; //记得最后一个斜杠不要忘记
OpenCVData = OpenCVRootPath + 'sources\samples\data\';
OprnCVHaar = OpenCVRootPath + 'sources\data\haarcascades\';
3. 运行 Demo (OpenCV for Delphi)
打开: D:\Delphi-OpenCV-Class-main\samples 目录下的 Samples.groupproj 这个文件即可。
点击编译运行就可以使用OpenCV了。下面是运行videpcapture_basic.exe 这个Demo,原生Demo只是打开摄像头,我修改了Demo ,将摄像头左上角进行了掩码虚化。
以上为原生打开摄像头视频。下面为实时对视频左上角进行虚化。