首先網(wǎng)載opencv,安裝(其實解壓) 解壓安裝完找路徑記錄 打vs2015,新建空白c++控制臺程序 新建完找屬性右鍵添加配置文件注意編譯環(huán)境 雙擊打配置文件c/c++附加包含目錄指定路徑inlcude文件目錄 點擊鏈接器附加庫目錄指定目錄lib面 鏈接器-》輸入指定lib文件該文件名lib目錄查看 samplecpp文件添加工程運行即
成都創(chuàng)新互聯(lián)公司服務(wù)緊隨時代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過十余年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實施團(tuán)隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進(jìn)行做網(wǎng)站、成都網(wǎng)站建設(shè)、建設(shè)、維護(hù)、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
z
opencv里面有相應(yīng)的二值化的接口,你可以查找下,另外,如果實在沒有
自己其實也可以編寫一個二值化的接口
編譯的Xcode項目失敗,出現(xiàn)以下錯誤: “缺少必需的架構(gòu)arm64在文件/用戶/ * / Git/ocr/opencv2。 它運作良好,如果我改變架構(gòu)(構(gòu)建設(shè)置下)(ARMv7的,armv7s),而不是(ARMv7的,armv7s)。 如何更改opencv的python構(gòu)建腳本,添加arm64支持opencv2。
1. micahp的回答幾乎是完美的,但錯過了模擬器版本。因此,修改平臺/ IOS /到: targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]
你需要下載行工具Xcode的5.0.1,然后運行 python opencv/platforms/ios/build_framework.py ios
2. 我修改了以下內(nèi)容,使之建立,雖然我還沒有得到一個arm64 iOS設(shè)備進(jìn)行測試的 編輯:我也只好跟著 假設(shè)“OPENCV”是包含從Github上的opencv源文件夾: 在每個gzlib.c, gzread.c, gzwrite.c位于opencv/3rdparty/zlib/地址: #include unistd.h
在頂部后,原有的包括。 另外開opencv/platforms/ios/cmake/Modules/Platform/iOS.cmake并從改線88: set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string "Build architecture for iOS")
到: set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_INCLUDING_64_BIT)" CACHE string "Build architecture for iOS")
在另外改變buildscriptopencv/platforms/ios/build_framework.py在99線和100從: targets = ["iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "i386"]
到: targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]
所得到的庫將包括以下內(nèi)容: $ xcrun -sdk iphoneos lipo -info opencv2
Architectures in the fat file: opencv2 are: armv7 armv7s i386 x86_64 arm64
雖然我有一個關(guān)于剩余的關(guān)注opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake它定義了一個數(shù)據(jù)指針的大小為4的行14和17。它應(yīng)該是8的64位我想,這樣我沒有測試過,如果庫工作arm64我會建議進(jìn)一步研究在這一點上,如果它不能正常運行。
3. 嘗試等待下個月。將發(fā)布新的XCode具有更強(qiáng)大的32/64位支持。
4. 修改“到: def build_framework(srcroot, dstroot):
"main function to do all the work"
targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386"]
for i in range(len(targets)):
build_opencv(srcroot, os.path.join(dstroot, "build"), targets[i], archs[i])
put_framework_together(srcroot, dstroot)
OpenCV(Open Source Computer Vision Library)是一個開源的計算機(jī)視覺庫,它提供了很多函數(shù),這些函數(shù)非常高效地實現(xiàn)了計算機(jī)視覺算法(最基本的濾波到高級的物體檢測皆有涵蓋)。
iOS官方參考文檔:
我這里使用的版本是 4.0.1
OpenCV相關(guān)的頭文件必須在 #import "ViewController.h" 之前導(dǎo)入,否則連接錯誤。
凡是導(dǎo)入OpenCV頭文件的類,都需要 把相應(yīng)類后綴名.m改為.mm 。我這里在 ViewController 控制器上進(jìn)行操作,所以改為: ViewController.mm 。
這里寫下OpenCV下OCR的流程:
1. 特征提取
2. 訓(xùn)練
3. 識別
特征提取
1. 在圖像預(yù)處理后,提取出字符相關(guān)的ROI圖像,并且大小歸一化,整個圖像的像素值序列可以直接作為特征。damiles是直接將整個字符圖像轉(zhuǎn)換化為vector向量特征作為特征輸入的。
2. 但直接將整個圖像作為特征數(shù)據(jù)維度太高,計算量太大,所以也可以進(jìn)行一些降維處理,減少輸入的數(shù)據(jù)量。拿到字符的ROI圖像,二值化。將圖像分塊,然后統(tǒng)計每個小塊中非0像素的個數(shù),這樣就形成了一個較小的矩陣,這矩陣就是新的特征了。
UCI就是這么處理,詳見其說明
OpenCV中l(wèi)etter_recog例子就是使用的其特征數(shù)據(jù)。
訓(xùn)練與識別
訓(xùn)練與識別一般都采用同一種機(jī)器學(xué)習(xí)方法:
DAMILES應(yīng)用了KNearest方法,對輸入數(shù)據(jù)進(jìn)行訓(xùn)練和識別。
1. 數(shù)據(jù)輸入:
getData()函數(shù)中:
為trainData和trainClasses設(shè)置數(shù)據(jù)。
2. 初始化機(jī)器學(xué)習(xí)算法,及其訓(xùn)練
knn=new CvKNearest( trainData, trainClasses, 0, false, K );
trainData, trainClasses數(shù)據(jù)已得到。
而K是分類的數(shù)目。
訓(xùn)練在CvKNearest算法初始化中已經(jīng)完成
3. 識別
獲取識別測試的數(shù)據(jù),testData
result=knn-find_nearest(testData,K,0,0,nearest,0);
result為識別的結(jié)果。
而OpenCV自帶例子中,提供了boost,mlp,knearest,nbayes,svm,rtrees這些機(jī)器學(xué)習(xí)方法,進(jìn)行訓(xùn)練和識別。
處理的步驟和方式都類似。
這些例子的識別率不是很高,OCR識別率在90%以上才有較好的使用意義,所以,OCR還需要更多特征和分析方法,來提高識別率,tesseract是一個不錯的開源OCR引擎。
-------------------
在tesseract最初的字體庫里,一種字體的字符樣本庫包括:94個字符,8種大小,4種字體(正常,粗體,斜體,斜粗體),每種20個樣本,共60160個樣本。
與UIC提供的字體庫不同的是,tesseract提供的是標(biāo)準(zhǔn)印刷體字體庫的識別,而UIC提供是手寫體handwriting的特征數(shù)據(jù)。
數(shù)據(jù)之美提到,G公司(應(yīng)該就是google了)的研究結(jié)果表明,在自然語言與機(jī)器翻譯領(lǐng)域,簡單模型加上大量有效樣本數(shù)據(jù),比復(fù)雜模型加上小樣本數(shù)據(jù),有效的多。 這個結(jié)論應(yīng)該適用機(jī)器學(xué)習(xí)的很多領(lǐng)域。運算足夠快,樣本足夠大,即使簡單的模型,效果可能會出人意料。
由此可見,收集有效的、大量的樣本庫是多么的重要。
opencv里面有相應(yīng)的二值化的接口,你可以查找下,另外,如果實在沒有 自己其實也可以編寫一個二值化的接口
如有疑問追問,如滿意記得采納,
如果有其他問題也可點我名字向我求助
答題不易,
如果沒有回答完全,請您諒解,
請采納最快回答的正確答案!!謝謝!