• Delphi机器视觉组件OpenCV

    发布日期:2025-03-07 15:02    点击次数:136

    最近项目需要用到图像比对和文字识别,我第一个想到的就是OpenCV,

    相信大家也一定听说过它,传言它是一个图像处理和人脸识别的库吧。

    它的应用非常广,

    除了人脸识别,它还可以做:

    美颜:自拍的时候瘦脸、大长腿、给眼睛加副眼镜等

    OCR:车牌识别、文字识别、识别名片、发票等

    自动驾驶:车道检测、交通标志检测、障碍物检测等

    工业领域:产品缺陷检测、火情检测等

    医疗领域:病源区域检测、病源周长、面积等,如确定肿瘤的边界和体积

    当然还有人工智能领域等。

    OpenCV的重要意义在于,它给了计算机一双眼睛! 

    那么OpenCV有Delphi的控件包吗?

    有的,并且是开源的,

    控件介绍

    在Github上搜索Delphi OpenCV,会出来两个主要的结果,

    Star都比较高,    

    图片

    第一个是Delphi-OpenCV,是将OpenCV的头文件翻译成Pas文件,    

    https://github.com/Laex/Delphi-OpenCV

    图片

    它支持的OpenCV版本是2.4.13,是一个比较低的版本,目前OpenCV的新版是4.10,

    所以我选择使用第二个Delphi-OpenCV-Class项目,

    它支持4.10:

    https://github.com/Laex/Delphi-OpenCV-Class

    图片

    支持的Delphi版本为Delphi 10.4~12。

    这两个项目都是同一个作者:Laentir Valeov,

    俄罗斯人的Delphi牛人真多!

    我们把它下载下来:

    图片

    Delphi-OpenCV-Class控件安装:

    控件包下载下来之后,先安装,

    打开Delphi-OpenCV-Class-main\packages\Delphi 12 Athens\目录中的CVClassGroup.groupproj    

    图片

    图片

    然后再配置Delphi的Library Path:    

    图片

    把控件源码目录添加进去:

    图片

    还需要把OpenCV相关的dll放在工程生成目录:

    下载OpenCV 4.10,地址:

    https://opencv.org/releases/

    解压之后,    

    将opencv\build\x64\vc16\bin\中的dll

    复制到Delphi-OpenCV-Class-main\bin\

    图片

    再将Delphi-OpenCV-Class-main\redist\opencv_delphi4100\中的dll

    拷到Delphi-OpenCV-Class-main\bin\

    图片

    github上下载Delphi-OpenCV项目,把里面的VC redist的dll也拷到Delphi-OpenCV-Class-main\bin\    

    图片

    然后打开Delphi-OpenCV-Class-main\samples\Samples.groupproj就可以跑示例了:    

    图片

    但是我这里Debug模式运行的时候还是少DLL,Release模式没有提示:    

    图片

    我不清楚是不是我系统的问题,

    一开始以为是我的VC Redist版本太低了,

    又下载了很多高版本的,

    还是不行,最后在谷歌下载了这个vcruntime140_1d.dll就可以了。

    因为示例中很多图片都是直接使用OpenCV中的资源:

    所以还要在cv.resource单元中的OpenCVRootPath值修改为你下载的opencv的资源目录,    

    图片

    第一个示例AddingImages是将两张图片以输入的透明度融合:    

    图片

    图片

    图片

    至此,OpenCV-Delphi-Class才算安装完毕!

    还需要注意:

    示例都是设置成Win 64位编译,不要有中文目录,不然断点会失效,不能调试!

    OpenCV-Delphi-Class基本用法:

    OpenCV的图片是一个多维数组,

    在Delphi控件中这个类型被定义为TMat,

    基本的方法如下:

    imread方法用于读取图片

    imshow方法用于显示图片

    waitkey方法用于等待用户输入

    我们来简单试一下:

    先建一个控制台工程,    

    图片

    因为我们的dll都是64位的,

    所以项目要添加Win 64平台:

    图片

       

    图片

    图片

    再设置工程输出目录指定到上面我们放好dll的目录:

    图片

    代码如下:    

    图片

    运行:

    图片

    按下任意键,程序就会退出了。

    当然了,这仅仅只是个开始,

    OpenCV还有图像二值化、滤波、边缘轮廓检测、图片匹配、视频处理、人脸识别等方法,

    后续我会出一些很相关的应用!

    我也认识有Delphier前辈用OpenCV做医疗图像处理、验证码识别、物体检测等,

    相信Delphi与OpenCV+AI互相配合也是未来的一片蓝海!

    那么你有用OpenCV做过哪方面应用或者想法呢?

    请在下方留言区交流!    

    本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。