最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python開發(fā)一個圖像標(biāo)注與OCR識別工具

 更新時間:2025年03月06日 15:45:50   作者:winfredzhang  
這篇文章主要介紹了一個使用Python開發(fā)的工具,允許用戶在圖像上進(jìn)行矩形標(biāo)注,使用 OCR 對標(biāo)注區(qū)域進(jìn)行文本識別,并將結(jié)果保存為 Excel 文件,感興趣的可以了解下

圖像標(biāo)注和OCR(光學(xué)字符識別)工具的代碼進(jìn)行詳細(xì)分析。該工具允許用戶在圖像上進(jìn)行矩形標(biāo)注,使用 OCR 對標(biāo)注區(qū)域進(jìn)行文本識別,并將結(jié)果保存為 Excel 文件。同時,用戶可以保存和加載標(biāo)注,清除標(biāo)注,以及裁剪圖像等。

項目簡介

這個圖像標(biāo)注和OCR工具的功能主要包括:

  • 加載圖像并顯示在界面上。
  • 允許用戶在圖像上繪制矩形框,以標(biāo)注感興趣的區(qū)域。
  • 在標(biāo)注區(qū)域內(nèi)執(zhí)行OCR識別,并顯示識別的文本。
  • 將OCR識別結(jié)果保存為Excel文件。
  • 保存和加載用戶的標(biāo)注數(shù)據(jù)(JSON格式)。
  • 提供裁剪、清除標(biāo)注、重置圖像等功能。

1. 圖像加載與顯示

首先,程序會掃描指定文件夾中的圖像文件(支持的格式包括 .png, .jpg, .jpeg, .bmp, .tiff),并顯示在界面的圖像面板中。

self.image_files = [f for f in os.listdir(folder_path) 
                    if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff'))]

通過 wx.ListBox 組件顯示圖像文件的列表,用戶可以點(diǎn)擊選擇一個文件,然后加載并顯示它:

file_path = os.path.join(self.folder_path, filename)
self.original_image = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), cv2.IMREAD_COLOR)
self.original_image = cv2.cvtColor(self.original_image, cv2.COLOR_BGR2RGB)

這段代碼使用 OpenCV 讀取圖像,并轉(zhuǎn)換顏色空間以適應(yīng) wxPython 顯示。

2. 矩形標(biāo)注

用戶可以在圖像上繪制矩形框,標(biāo)記感興趣的區(qū)域。程序通過鼠標(biāo)事件(按下、移動、松開)來繪制和更新矩形框:

def on_mouse_down(self, event):
    """鼠標(biāo)按下開始繪制矩形"""
    if self.displayed_image is not None:
        self.start_point = event.GetPosition()
        self.drawing = True

def on_mouse_move(self, event):
    """鼠標(biāo)移動時更新矩形"""
    if self.drawing and self.displayed_image is not None:
        self.image_panel.Refresh()

???????def on_mouse_up(self, event):
    """鼠標(biāo)松開完成矩形繪制"""
    if self.drawing and self.displayed_image is not None:
        end_point = event.GetPosition()
        # 確保矩形方向正確
        x1 = min(self.start_point.x, end_point.x)
        y1 = min(self.start_point.y, end_point.y)
        x2 = max(self.start_point.x, end_point.x)
        y2 = max(self.start_point.y, end_point.y)
        orig_rect = self.convert_to_original_coords((x1, y1, x2, y2))
        self.rectangles.append(orig_rect)
        self.drawing = False
        self.image_panel.Refresh()

在 on_mouse_down 中,用戶點(diǎn)擊圖像開始繪制矩形框,on_mouse_move 用于實(shí)時更新矩形的形狀,on_mouse_up 在用戶松開鼠標(biāo)時完成矩形的繪制。

3. OCR識別

標(biāo)注完成后,用戶可以點(diǎn)擊“識別”按鈕,程序會對標(biāo)注區(qū)域進(jìn)行OCR識別。OCR處理通過 pytesseract 庫實(shí)現(xiàn):

text = pytesseract.image_to_string(
    pil_image, 
    lang='chi_sim',  # 中文簡體
    config='--psm 6 --oem 3'  # 更精確的文本塊處理
)

識別結(jié)果會顯示在文本框中,并且可以將識別的結(jié)果保存為Excel文件:

if ocr_results:
    df = pd.DataFrame({'識別區(qū)域': range(1, len(ocr_results) + 1), '識別文本': ocr_results})
    output_path = os.path.join(self.folder_path, f'{self.current_filename}_ocr_results.xlsx')
    df.to_excel(output_path, index=False, engine='openpyxl')

使用 pandas 庫將識別結(jié)果保存為Excel文件,方便后續(xù)查看和處理。

4. 標(biāo)注的保存與加載

程序還允許用戶將標(biāo)注區(qū)域保存為 JSON 格式,以便下次加載時使用。這是通過以下方式實(shí)現(xiàn)的:

annotations_data = {
    'filename': self.current_filename,
    'rectangles': self.rectangles
}
json_path = os.path.join(self.folder_path, f'{self.current_filename}_annotations.json')
with open(json_path, 'w', encoding='utf-8') as f:
    json.dump(annotations_data, f)

標(biāo)注文件會根據(jù)圖像的文件名命名,以便與圖像文件對應(yīng)。加載標(biāo)注時,程序會讀取 JSON 文件并恢復(fù)之前的標(biāo)注狀態(tài):

with open(json_path, 'r', encoding='utf-8') as f:
    annotations_data = json.load(f)
if annotations_data['filename'] == self.current_filename:
    self.rectangles = annotations_data['rectangles']

5. 裁剪與重置圖像

裁剪功能允許用戶裁剪圖像的選定區(qū)域。用戶完成矩形繪制后,點(diǎn)擊“裁剪”按鈕,程序會根據(jù)最后一個矩形進(jìn)行圖像裁剪:

cropped = self.current_image[y1:y2, x1:x2].copy()

如果需要重置圖像,用戶可以點(diǎn)擊“重置圖像”按鈕,程序?qū)⒒謴?fù)到原始圖像狀態(tài)。

6. UI組件與布局

wxPython 的布局管理使得界面整潔易用。主界面分為文件列表、圖像顯示區(qū)域和操作按鈕區(qū)域三個部分。文件列表用于選擇圖像,圖像顯示區(qū)域展示圖像并允許標(biāo)注,按鈕區(qū)域提供裁剪、標(biāo)注、OCR識別等操作。

file_list_sizer = wx.BoxSizer(wx.VERTICAL)
self.file_listbox = wx.ListBox(panel, choices=self.image_files, style=wx.LB_SINGLE)
file_list_sizer.Add(self.file_listbox, 1, wx.EXPAND | wx.ALL, 10)

通過 BoxSizer 管理不同控件的布局,使得界面更加模塊化和靈活。

運(yùn)行結(jié)果

以上就是使用Python開發(fā)一個圖像標(biāo)注與OCR識別工具的詳細(xì)內(nèi)容,更多關(guān)于Python圖像標(biāo)注與OCR識別的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python self參數(shù)詳細(xì)介紹

    Python self參數(shù)詳細(xì)介紹

    事實(shí)上,Python只是規(guī)定,無論是構(gòu)造方法還是實(shí)例方法,最少要包含一個參數(shù),并沒有規(guī)定該參數(shù)的具體名稱。之所以將其命名為self,只是程序員之間約定俗成的一種習(xí)慣,遵守這個約定,可以使我們編寫的代碼具有更好的可讀性
    2023-01-01
  • python庫pydantic的簡易入門教程

    python庫pydantic的簡易入門教程

    pydantic庫是一種常用的用于數(shù)據(jù)接口schema定義與檢查的庫,通過pydantic庫,我們可以更為規(guī)范地定義和使用數(shù)據(jù)接口,下面這篇文章主要給大家介紹了關(guān)于python庫pydantic的簡易入門教程,需要的朋友可以參考下
    2022-03-03
  • Jupyter notebook在mac:linux上的配置和遠(yuǎn)程訪問的方法

    Jupyter notebook在mac:linux上的配置和遠(yuǎn)程訪問的方法

    今天小編就為大家分享一篇關(guān)于Jupyter notebook在mac:linux上的配置和遠(yuǎn)程訪問的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python中yield函數(shù)的用法詳解

    Python中yield函數(shù)的用法詳解

    這篇文章詳細(xì)介紹了Python中的yield關(guān)鍵字及其用法,yield關(guān)鍵字用于生成器函數(shù)中,使得函數(shù)可以像迭代器一樣工作,但不會一次性將所有結(jié)果加載到內(nèi)存中,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • python中的pygame實(shí)現(xiàn)接球小游戲

    python中的pygame實(shí)現(xiàn)接球小游戲

    這篇文章主要介紹了python中的pygame實(shí)現(xiàn)接球小游戲,文章基于python的相關(guān)資料展開詳細(xì)的內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • 基于Python的XSS測試工具XSStrike使用方法

    基于Python的XSS測試工具XSStrike使用方法

    XSS(Cross Site Scripting,跨站腳本攻擊)是一類特殊的Web客戶端腳本注入攻擊手段,通常指攻擊者通過“HTML注入”篡改了網(wǎng)頁,插入惡意的腳本,從而在用戶瀏覽網(wǎng)頁時控制瀏覽器的一種攻擊。
    2017-07-07
  • Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法

    Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法

    今天小編就為大家分享一篇Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 詳解tensorflow訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)CNN圖像分類

    詳解tensorflow訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)CNN圖像分類

    本篇文章了tensorflow訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)CNN圖像分類,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • python和C++共享內(nèi)存?zhèn)鬏攬D像的示例

    python和C++共享內(nèi)存?zhèn)鬏攬D像的示例

    這篇文章主要介紹了python和C++共享內(nèi)存?zhèn)鬏攬D像的示例,幫助大家利用python處理圖片,感興趣的朋友可以了解下
    2020-10-10
  • Python如何實(shí)現(xiàn)文本轉(zhuǎn)語音

    Python如何實(shí)現(xiàn)文本轉(zhuǎn)語音

    文本轉(zhuǎn)語音,一般會用在無障礙開發(fā)。下面介紹如何使用Python實(shí)現(xiàn)將文本文件轉(zhuǎn)換成語音輸出。跟著小編一起來看看吧。
    2016-08-08

最新評論

凤翔县| 房产| 江西省| 中方县| 西平县| 繁昌县| 逊克县| 镇沅| 江达县| 武定县| 娄底市| 富锦市| 乳源| 兴安盟| 雷波县| 嘉善县| 呼图壁县| 榆树市| 泸水县| 鄂伦春自治旗| 盈江县| 五华县| 马公市| 汶上县| 宝清县| 陆河县| 陇西县| 观塘区| 濉溪县| 双牌县| 洛隆县| 巴林左旗| 韶关市| 和田市| 陵川县| 霍邱县| 岑溪市| 林芝县| 中宁县| 大冶市| 衡阳县|