最近項(xiàng)目需要用到圖像比對和文字識別,我第一個(gè)想到的就是OpenCV, 相信大家也一定聽說過它,傳言它是一個(gè)圖像處理和人臉識別的庫吧。 它的應(yīng)用非常廣, 除了人臉識別,它還可以做: 美顏:自拍的時(shí)候瘦臉、大長腿、給眼睛加副眼鏡等 OCR:車牌識別、文字識別、識別名片、發(fā)票等 自動駕駛:車道檢測、交通標(biāo)志檢測、障礙物檢測等 工業(yè)領(lǐng)域:產(chǎn)品缺陷檢測、火情檢測等 醫(yī)療領(lǐng)域:病源區(qū)域檢測、病源周長、面積等,如確定腫瘤的邊界和體積 當(dāng)然還有人工智能領(lǐng)域等。 OpenCV的重要意義在于,它給了計(jì)算機(jī)一雙眼睛! 那么OpenCV有Delphi的控件包嗎? 有的,并且是開源的, 控件介紹 在Github上搜索Delphi OpenCV,會出來兩個(gè)主要的結(jié)果, Star都比較高, 第一個(gè)是Delphi-OpenCV,是將OpenCV的頭文件翻譯成Pas文件, 它支持的OpenCV版本是2.4.13,是一個(gè)比較低的版本,目前OpenCV的新版是4.10, 所以我選擇使用第二個(gè)Delphi-OpenCV-Class項(xiàng)目, 它支持4.10: https://github.com/Laex/Delphi-OpenCV-Class 支持的Delphi版本為Delphi 10.4~12。 這兩個(gè)項(xiàng)目都是同一個(gè)作者:Laentir Valeov, 俄羅斯人的Delphi牛人真多! 我們把它下載下來: Delphi-OpenCV-Class控件安裝: 控件包下載下來之后,先安裝, 打開Delphi-OpenCV-Class-main\packages\Delphi 12 Athens\目錄中的CVClassGroup.groupproj 然后再配置Delphi的Library Path: 把控件源碼目錄添加進(jìn)去: 還需要把OpenCV相關(guān)的dll放在工程生成目錄: 下載OpenCV 4.10,地址: https:///releases/ 解壓之后, 將opencv\build\x64\vc16\bin\中的dll 復(fù)制到Delphi-OpenCV-Class-main\bin\ 再將Delphi-OpenCV-Class-main\redist\opencv_delphi4100\中的dll 拷到Delphi-OpenCV-Class-main\bin\ github上下載Delphi-OpenCV項(xiàng)目,把里面的VC redist的dll也拷到Delphi-OpenCV-Class-main\bin\ 然后打開Delphi-OpenCV-Class-main\samples\Samples.groupproj就可以跑示例了: 但是我這里Debug模式運(yùn)行的時(shí)候還是少DLL,Release模式?jīng)]有提示: 我不清楚是不是我系統(tǒng)的問題, 一開始以為是我的VC Redist版本太低了, 又下載了很多高版本的, 還是不行,最后在谷歌下載了這個(gè)vcruntime140_1d.dll就可以了。 因?yàn)槭纠泻芏鄨D片都是直接使用OpenCV中的資源: 所以還要在cv.resource單元中的OpenCVRootPath值修改為你下載的opencv的資源目錄, 第一個(gè)示例AddingImages是將兩張圖片以輸入的透明度融合: 至此,OpenCV-Delphi-Class才算安裝完畢! 還需要注意: 示例都是設(shè)置成Win 64位編譯,不要有中文目錄,不然斷點(diǎn)會失效,不能調(diào)試! OpenCV-Delphi-Class基本用法: OpenCV的圖片是一個(gè)多維數(shù)組, 在Delphi控件中這個(gè)類型被定義為TMat, 基本的方法如下: imread方法用于讀取圖片 imshow方法用于顯示圖片 waitkey方法用于等待用戶輸入 我們來簡單試一下: 先建一個(gè)控制臺工程, 因?yàn)槲覀兊膁ll都是64位的, 所以項(xiàng)目要添加Win 64平臺: 再設(shè)置工程輸出目錄指定到上面我們放好dll的目錄: 代碼如下: 運(yùn)行: 按下任意鍵,程序就會退出了。 當(dāng)然了,這僅僅只是個(gè)開始, OpenCV還有圖像二值化、濾波、邊緣輪廓檢測、圖片匹配、視頻處理、人臉識別等方法, 后續(xù)我會出一些很相關(guān)的應(yīng)用! 我也認(rèn)識有Delphier前輩用OpenCV做醫(yī)療圖像處理、驗(yàn)證碼識別、物體檢測等, 相信Delphi與OpenCV+AI互相配合也是未來的一片藍(lán)海! 那么你有用OpenCV做過哪方面應(yīng)用或者想法呢? 請?jiān)谙路搅粞詤^(qū)交流! |
|