亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

OCR 的 OpenCV Python 邊框去除預處理

OCR 的 OpenCV Python 邊框去除預處理

慕斯王 2022-05-24 16:54:43
我目前正在從事一個需要為 OCR 處理圖像的項目。我設置了過濾器以使 OCR 的工作盡可能簡單,但圖像的一個方面我無法弄清楚如何修復。在包含的圖像中,您可以看到我正在嘗試閱讀的文本(“PRTraining Tissue...”),并且圖像周圍有一個黑色邊框,需要刪除才能使我的歪斜校正代碼起作用。有沒有什么簡單的方法可以在不影響文字的情況下快速用白色填充這個黑色邊框?未過濾的圖像:過濾圖像:我已經編寫了一些代碼來刪除大部分背景,但是大的黑點仍然作為邊框。包含的代碼是我的圖像裁剪腳本,它刪除了大部分圖像的黑色邊框并嘗試盡可能地隔離文本,但不幸的是,它仍然留下了相當多的黑色,與我的歪斜校正腳本混淆。def boarderRemoval(img):    """    Takes in a numpy array and crops the image down to isolate the text (Still leaves a small black border that varys from image to image\n    Vars:\n    - img <- numpy array of the label\n    Returns:\n    - Cropped down image with smaller black borders    """    contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)    cnt = contours[0]    x,y,w,h = cv2.boundingRect(cnt)    correctedImage = img[y: y + h, x: x + w]    return correctedImage
查看完整描述

1 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

從過濾后的圖像開始,這是一個簡單的方法

  • 將圖像轉換為灰度并找到輪廓

  • 在蒙版上繪制輪廓

  • 反轉蒙版

  • 按位或原始圖像


轉換為灰度后,我們找到要保留的主要輪廓,并將此部分繪制到蒙版上。之后,我們反轉遮罩來得到這個代表想要填充白色的邊框部分的圖像

http://img1.sycdn.imooc.com//628c9d840001a6a403260300.jpg

現在我們簡單地cv2.bitwise_or()用原始圖像來得到我們的結果


http://img1.sycdn.imooc.com//628c9d8f00017cdd03220297.jpg

import cv2

import numpy as np


image = cv2.imread('1.png')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

mask = np.zeros(image.shape, dtype=np.uint8)


cnts = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

cnts = cnts[0] if len(cnts) == 2 else cnts[1]


cv2.fillPoly(mask, cnts, [255,255,255])

mask = 255 - mask

result = cv2.bitwise_or(image, mask)


cv2.imshow('mask', mask)

cv2.imshow('result', result)

cv2.waitKey(0)


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 433 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號