分享

Delphi机器视觉组件OpenCV

 喜欢站在山上 2024-08-16 发布于吉林

最近项目需要用到图像比对和文字识别,我第一个想到的就是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:///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做过哪方面应用或者想法呢?

请在下方留言区交流!    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多