HALCON示例程序train_characters_ocr.hdev使用SVM分類器訓練字體

HALCON示例程序train_characters_ocr.hdev使用SVM分類器訓練字體

小哥哥小姐姐覺得有用點個贊唄!
在這里插入圖片描述

示例程序源碼(加注釋)

藍色字體均為算子解釋鏈接,可以前往查看解答

  • 關于顯示類函數解釋
    read_image (Image, ‘ocr/chars_training_01.png’)
  • 獲取單通道圖像的指針
    get_image_pointer1 (Image, Pointer, Type, Width, Height)
    dev_close_window ()
    dev_open_window (0, 0, Width, Height, ‘white’, WindowHandle)
    set_display_font (WindowHandle, 12, ‘mono’, ‘true’, ‘false’)
    dev_set_draw (‘margin’)
    dev_set_line_width (2)
    dev_display (Image)
    dev_update_window (‘off’)
    dev_update_pc (‘off’)
    dev_update_var (‘off’)
  • 創建一個 SVM 分類器內容,從A-G
    ClassNames := [‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’]
  • 創建OCR分類器
    create_ocr_class_svm (8, 10, ‘constant’, [‘convexity’,‘num_holes’,‘projection_horizontal’,‘projection_vertical’], ClassNames, ‘rbf’, 0.02, 0.05, ‘one-versus-one’, ‘normalization’, 10, OCRHandle)

for i := 1 to 7 by 1
read_image (Image, ‘ocr/chars_training_’ + i$’.2d’)
dev_display (Image)
* halcon自定義函數大括號內為其代碼
get_regions (Image, SortedRegions)
{
dev_set_color (‘white’)

  • 二值化
    threshold (Image, Region, 0, 125)
  • 分割連通域
    connection (Region, ConnectedRegions)
  • 通過面積篩選區域
    select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 50, 999999)
  • 對區域進行排序
    sort_region (SelectedRegions, SortedRegions, ‘character’, ‘true’, ‘row’)
    return ()
    }
    • 對元素進行計數
      count_obj (SortedRegions, NumberObjects)
      for j := 1 to NumberObjects by 1
    • 選取數組內指定元素
      select_obj (SortedRegions, ObjectSelected, j)
      if (i == 1 and j == 1)
      • 將訓練字符儲存到指定文件
        write_ocr_trainf (ObjectSelected, Image, ClassNames[j - 1], ‘train_characters_ocr.trf’)
        else
      • 向訓練文件中添加對象
        append_ocr_trainf (ObjectSelected, Image, ClassNames[j - 1], ‘train_characters_ocr.trf’)
        endif
        dev_set_color (‘gray’)
        dev_display (ObjectSelected)
        disp_message (WindowHandle, ClassNames[j - 1], ‘window’, 10, 10 + (j * 20), ‘black’, ‘true’)
        endfor
        disp_continue_message (WindowHandle, ‘black’, ‘true’)
        stop ()
        endfor
        讀訓練文件并轉化為圖像
        read_ocr_trainf (Characters, ‘train_characters_ocr.trf’, CharacterNames)
        count_obj (Characters, NumberCharacters)

for i := 1 to NumberCharacters by 1
select_obj (Characters, CharacterSelected, i)
dev_clear_window ()
dev_display (CharacterSelected)
disp_message (WindowHandle, CharacterNames[i - 1], ‘window’, 10, 10, ‘black’, ‘true’)
endfor

  • 訓練OCR分類器
    trainf_ocr_class_svm (OCRHandle, ‘train_characters_ocr.trf’, 0.001, ‘default’)
  • 縮減SVM分類器,以減少分類所用時間。
    reduce_ocr_class_svm (OCRHandle, ‘bottom_up’, 2, 0.001, OCRHandleReduced)
  • 將訓練出的分類器寫入文件
    write_ocr_class_svm (OCRHandleReduced, ‘font_characters_ocr’)
  • 清除OCR分類器
    clear_ocr_class_svm (OCRHandle)
    clear_ocr_class_svm (OCRHandleReduced)
    stop ()
    dev_clear_window ()
    disp_message (WindowHandle, ‘No more lines to execute’, ‘window’, 10, 10, ‘black’, ‘true’)

處理思路

這個例子是主要講解了如何使用,SVM分類器進行OCR字符訓練。

后記

大家有什么問題可以向我提問哈,我看到了第一時間回復,希望在學習的路上多多結交良師益友。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254813.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254813.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254813.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《信息系統安全等級保護定級報告》

《信息系統安全等級保護定級報告》一、XXX信息系統描述簡述確定該系統為定級對象的理由。從三方面進行說明:一是描述承擔信息系統安全責任的相關單位或部門,說明本單位或部門對信息系統具有信息安全保護責任,該信息系統為本單位或部門的定級對…

安裝DirectX SDK時出現Error Code:s1023 的解決方案

安裝DXSDK_Jun10時(下載地址:http://www.microsoft.com/en-us/download/confirmation.aspx?id6812 ) 出現下圖所示錯誤 Error Code:s1023 計算機上有安裝過更新版的Microsoft Visual C 2010 Redistributable,打開“…

Linux下C++ UDP Socket例子

這里我們給出了linux下C的socket代碼如下&#xff1a; #include <iostream> #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h> #include <netinet/in.h> #include <stdlib.h> #include <…

使用ES6的Promise完美解決回調地獄

相信經常使用ajax的前端小伙伴&#xff0c;都會遇到這樣的困境&#xff1a;一個接口的參數會需要使用另一個接口獲取。 年輕的前端可能會用同步去解決&#xff08;笑~&#xff09;&#xff0c;因為我也這么干過&#xff0c;但是極度影響性能和用戶體驗。 正常的前端會把接口寫在…

halcon file_exists 檢查文件是否存在

目錄file_exists&#xff08;算子&#xff09;描述參數file_exists&#xff08;算子&#xff09; file_exists - 檢查文件是否存在。 file_exists&#xff08;:: FileName&#xff1a;FileExists&#xff09; 描述 運算符file_exists檢查指示的文件是否已存在。 如果是這種…

頂級數據庫行會Percona阿里全面解析下一代云數據庫技術

摘要&#xff1a; 幾年前&#xff0c;數據庫管理系統的企業市場似乎還如同銅墻鐵壁&#xff0c;除了老牌廠商外&#xff0c;其他廠商休想打進來。隨著移動互聯、物聯網技術的發展&#xff0c;多終端應用的時代悄然而至。結構化與非結構化數據的爆發&#xff0c;推動人類社會進入…

怎樣推斷兩個日期在一周內

怎樣推斷兩個日期在一周內。首先&#xff0c;須要搞清楚一周內究竟是什么含義。國內一般是以周一作為每周的第一天&#xff0c;而西方普遍以周日作為每周的第一天。 下面&#xff0c;我們以西方的標準來處理這個問題。 常見的日期結構&#xff1a; struct DateTime { int year;…

TCP/UDP 網絡編程實例

TCP服務器&#xff1a;TCP_Server.c#include<stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/stat.h> #include <netinet/in.h> #in…

MFC 雙擊控件 提示重載函數已存在

&#xfeff;&#xfeff;VS2013 界面雙擊按鈕控件&#xff0c;提示重載函數已存在&#xff0c;一般情況下&#xff0c;雙擊控件都是可以跳到代碼處的&#xff0c;為什么現在不能了&#xff1f; 這涉及到VS2013的自動生成問題 。 原因&#xff1a;雙擊控件跳到代碼處時&#x…

PHP常用函數總結

數學函數1.abs(): 求絕對值$abs abs(-4.2); //4.2 數字絕對值數字2.ceil(): 進一法取整echo ceil(9.999); // 10 浮點數進一取整3.floor(): 舍去法取整echo floor(9.999); // 9 浮點數直接舍去小數部分4.fmod(): 浮點數取余5.pow(): 返回數的n次方echo pow(-1, 20); // 1 基礎…

C#指定窗口顯示位置的方法

小哥哥小姐姐覺得有用點個贊唄&#xff01; C#指定窗口顯示位置的方法 1.使用StartPosition MainForm mainform; mainformnew MainForm (); dlgCtrl.StartPosition FormStartPosition.Manual;下面是FormStartPosition里邊的定義與解釋 // 指定窗體的初始位置。public …

OpenFileDialog對話框Filter屬性

OpenFileDialog對話框的Filter屬性說明&#xff1a; 首先說明一個示例&#xff0c;分析一下Filter屬性的構成&#xff1a;“ Excel文件|*.xls ”&#xff0c;前面的“Excel文件”成為標簽&#xff0c;是一個可讀的字符串&#xff0c;可以自定定義&#xff0c;“|*.xls”是篩選器…

c++中的::符

&#xfeff;&#xfeff;::是域運算符&#xff0c;一個用法是&#xff0c;如果在局部有一個變量n&#xff0c;還有一個全局變量n&#xff0c;即兩個同名&#xff0c;你要想訪問全局的就要寫::n,寫n就是局部變量.另外一個就是控制命名空間&#xff0c;例如C中的cin和cout屬于st…

x264_param_default

void x264_param_default( x264_param_t *param ) { /* 開辟內存空間*/ memset( param, 0, sizeof( x264_param_t ) ); /* CPU自動檢測 */ param->cpu x264_cpu_detect(); param->i_threads X264_THREADS_AUTO; /* 并行編碼線程為0 */ param->b_determini…

MySQL基礎原創筆記(一)

對表的增刪改操作&#xff1a; 創建表&#xff1a; create table student ( id int primary key auto_increment, name varchar(10) character set utf8 not null, sex char(2) default ‘M’, constraint fk_student_score foreign key(id) references score(id)…

C# 修改項目文件夾名稱完全版

目錄步驟1、打開項目&#xff0c;修改文件名稱2、更改命名空間名稱3、在解決方案中用txt1000替換所有test5004、使用記事本打開項目文件&#xff08;.sln文件&#xff09;修改路徑5、更改項目文件夾名稱6、刪除之前的殘留文件7、大功告成&#xff01;&#xff01;&#xff01;&…

js中遍歷注冊事件時索引怎么獲取

注意&#xff1a;這種寫法&#xff0c;是有問題的。注冊事件是在頁面加載完畢以后就完成了&#xff0c;但此時并沒有觸發事件。事件觸發是由用戶在頁面上點擊時才會觸發&#xff0c;所以說當用戶點擊時&#xff0c;才會執行事件處理函數&#xff0c;那么此時的i已經變成了4&…

spring 優點

spring 的優點&#xff1f;1.降低了組件之間的耦合性 &#xff0c;實現了軟件各層之間的解耦 2.可以使用容易提供的眾多服務&#xff0c;如事務管理&#xff0c;消息服務等 3.容器提供單例模式支持 4.容器提供了AOP技術&#xff0c;利用它很容易實現如權限攔截&#xff0c;運行…

模式對話框與非模式對話框的區別

&#xfeff;&#xfeff;模式對話框就是不處理它就沒法處理父窗口,而非模式對話框就是不用先處理此對話框也可以處理父窗口.例子:在桌面上右擊我的電腦,選擇屬性,彈出系統屬性窗口,點擊下面的技術支持,彈出技術支持信息,現在再對系統屬性窗口進行操作就操作不了,這種叫做模式對…

FFMpeg框架代碼閱讀

簡介FFmpeg是一個集錄制、轉換、音/視頻編碼解碼功能為一體的完整的開源解決方案。FFmpeg的開發是基于Linux操作系統&#xff0c;但是可以在大多數操作系統中編譯和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多種編碼&#xff0c;AVI、MPEG、OGG、Matroska、ASF等90…