国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

16- 圖片轉(zhuǎn)文字識(shí)別實(shí)操 (OpenCV系列) (項(xiàng)目十六)

這篇具有很好參考價(jià)值的文章主要介紹了16- 圖片轉(zhuǎn)文字識(shí)別實(shí)操 (OpenCV系列) (項(xiàng)目十六)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

項(xiàng)目要點(diǎn)

  • 讀取圖片:? image = cv2.imread('./images/page.jpg')
  • 調(diào)整圖片尺寸:? resized = cv2.resize(image, (width, height), interpolation = cv2.INTER_AREA)
  • 灰度化處理:? gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  • 高斯模糊去噪點(diǎn):? gray = cv2.GaussianBlur(gray, (5,5), 0)
  • 邊緣檢測(cè):? edged = cv2.Canny(gray, 75, 200)
  • cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]? 用邊緣檢測(cè)的結(jié)果進(jìn)行輪廓檢測(cè)? # 返回值兩個(gè): contours, hierarchy
  • 按照面積排序:? cnts = sorted(cnts, key = cv2.contourArea, reverse = True)
  • 顯示輪廓:? image_contours = cv2.drawContours(image.copy(), cnts, -1, (0, 0, 255), 2)
  • 計(jì)算輪廓周長(zhǎng):? perimeter = cv2.arcLength(c, True)? # for c in cnts:
  • 多邊形逼近:? approx = cv2.approxPolyDP(c, 0.02 * perimeter, True)
  • 顯示輪廓: image_contours = cv2.drawContours(image.copy(), [screen_cnt], -1, (0,0,255), 2)?
  • 計(jì)算變換矩陣: M =cv2.getPerspectiveTransform(rect,dst) # rect 是原始坐標(biāo),dst 是調(diào)整后坐標(biāo)
  • 通過(guò)坐標(biāo)透視變換轉(zhuǎn)換: warped = cv2.warpPerspective(image, M, (max_width, max_height))
  • 灰度化處理: warped = cv2.cvtColor(warped, cv2.COLOR_BGR2GRAY)? # 二值化只能處理二維圖片
  • 二值化處理: ref = cv2.threshold(warped, 120, 255, cv2.THRESH_BINARY)[1]? # 兩個(gè)返回值: ret, thresh1
  • 保存圖片:? cv2.imwrite('./scan1.jpg', ref)
  • 圖片轉(zhuǎn)文字:? text = pytesseract.image_to_string(Image.open('./scan1.jpg'))? # 需調(diào)包
  • 保存str 到 txt文件:
with open('test.txt','w', encoding='utf-8') as f:
    f.write(text)

圖片轉(zhuǎn)文字項(xiàng)目

1 圖片預(yù)處理

1.1 顯示原圖

def cv_show(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
# 導(dǎo)包
import numpy as np
import cv2
# 讀取圖片
image = cv2.imread('./images/page.jpg')
print(image.shape)   # (3264, 2448, 3)  

# 計(jì)算比例,限定高度500
ratio = image.shape[0] / 500.0
orig = image.copy()
cv_show('img', image)  # 圖片極大, 看不全...

open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能

1.2 圖片尺寸調(diào)整

def resize(image, width = None, height = None, inter = cv2.INTER_AREA):
    # cv2.resize()
    dim = None
    (h, w) = image.shape[:2]
    # print(image.shape[:2])
    if width is None and height is None:
        return image
    if width is None:  # 只提供了高度
        r = height /float(h)
        dim = (int(w * r), height)
        # print(dim)
    else: # 如果只提供了寬度
        r = width / float(w)
        dim = (width, int(h * r))
    resized = cv2.resize(image, dim, interpolation = inter)
    return resized

# 對(duì)圖片進(jìn)行 resize
image = resize(orig, height = 500)
cv_show('img', image) 

open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能

1.3 灰度化處理和輪廓檢測(cè)

# 灰度化處理
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 高斯模糊去噪點(diǎn)
gray = cv2.GaussianBlur(gray, (5,5), 0)
# 邊緣檢測(cè)
edged = cv2.Canny(gray, 75, 200)
cv_show('img', edged)

open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能

1.4 輪廓檢測(cè)

# 用邊緣檢測(cè)的結(jié)果進(jìn)行輪廓檢測(cè)
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
# 按照面積排序
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)
print(len(cnts))  # 16  輪廓數(shù)量
# 顯示輪廓
image_contours = cv2.drawContours(image.copy(), cnts, -1, (0, 0, 255), 2)  
cv_show('img', image_contours)

open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能

1.5 找出最大輪廓

# 遍歷輪廓,找出最大輪廓
for c in cnts:
    # 計(jì)算輪廓周長(zhǎng)
    perimeter = cv2.arcLength(c, True)
    # 多邊形逼近
    approx = cv2.approxPolyDP(c, 0.02 * perimeter, True)
    if len(approx) == 4:
        screen_cnt = approx
        break
# 顯示輪廓
image_contours = cv2.drawContours(image.copy(), [screen_cnt], -1, (0, 0, 255), 2)  
cv_show('img', image_contours)

open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能

2 透視變換,拉正視角

2.1 透視轉(zhuǎn)換

def order_points(pts):
    # 創(chuàng)建全為0 的矩陣, 來(lái)接收找到的坐標(biāo)
    rect = np.zeros((4, 2), dtype = 'float32')
    s = pts.sum(axis = 1)
    # 左上角的坐標(biāo)一定是X,Y相加最小的,右下為最大的
    rect[0] = pts[np.argmin(s)]
    rect[2] = pts[np.argmax(s)]
    
    # 右上角的x,y 相減的差值一定是最小的
    # 左下角的x,y 相減,差值一定是最大的
    diff = np.diff(pts, axis = 1)
    rect[1] = pts[np.argmin(diff)]
    rect[3] = pts[np.argmax(diff)]
    return rect
def four_point_transform(image, pts):
    rect = order_points(pts)
    (tl, tr, br, bl) = rect
    
    widthA = np.sqrt((br[0] - bl[0]) ** 2 + (br[1] - bl[1]) ** 2)
    widthB = np.sqrt((tr[0] - tl[0]) ** 2 + (tr[1] - tl[1]) ** 2)
    max_width = max(int(widthA), int(widthB))
    heightA = np.sqrt((tr[0] - br[0]) ** 2 + (tr[1] - br[1]) ** 2)
    heightB = np.sqrt((tl[0] - bl[0]) ** 2 + (tl[1] - bl[1]) ** 2)
    max_height = max(int(heightA), int(heightB))
    
    dst = np.array([
        [0, 0],
        [max_width - 1, 0],
        [max_width -1, max_height - 1],
        [0, max_height -1]], dtype = 'float32')
    
    M = cv2.getPerspectiveTransform(rect, dst)
    warped = cv2.warpPerspective(image, M, (max_width, max_height))
    return warped
# 視圖透視變換, 將視圖轉(zhuǎn)為正對(duì)透視
warped = four_point_transform(orig, screen_cnt.reshape(4, 2) * ratio)
# 二值化處理
warped = cv2.cvtColor(warped, cv2.COLOR_BGR2GRAY)
ref = cv2.threshold(warped, 120, 255, cv2.THRESH_BINARY)[1]
print(ref.shape)  # (2624, 1962)
cv_show('ref', ref)
# 把處理好的圖片寫(xiě)入文件
cv2.imwrite('./scan1.jpg', ref)
cv_show('warp', warped)
cv2.imwrite('./warped.jpg', warped)

open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能?????open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能??

3 tesseract 進(jìn)行識(shí)別

import pytesseract  # 調(diào)用電腦的識(shí)圖轉(zhuǎn)文字功能 
from PIL import Image 
# pytesseract要求的image不是OpenCV讀進(jìn)來(lái)的image, 而是pillow這個(gè)包, 即PIL
text = pytesseract.image_to_string(Image.open('./scan1.jpg'))
print(text)

with open('test.txt','w', encoding='utf-8') as f:
    f.write(text)
  • 文字識(shí)別結(jié)果

open 圖片 文字識(shí)別,項(xiàng)目梳理,opencv,深度學(xué)習(xí),計(jì)算機(jī)視覺(jué),圖像處理,人工智能文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803256.html

到了這里,關(guān)于16- 圖片轉(zhuǎn)文字識(shí)別實(shí)操 (OpenCV系列) (項(xiàng)目十六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【項(xiàng)目管理】Java OCR實(shí)現(xiàn)圖片文字識(shí)別

    【項(xiàng)目管理】Java OCR實(shí)現(xiàn)圖片文字識(shí)別

    系統(tǒng):Win10 Java:1.8.0_333 IDEA:2020.3.4 最近在看外國(guó)漫畫(huà)的時(shí)候,發(fā)現(xiàn)有些漫畫(huà)沒(méi)有漢化的翻譯,這哪看得懂。正想把那些日語(yǔ)輸入到有道翻譯一下,發(fā)現(xiàn)日文不會(huì)輸。正巧之前有接觸關(guān)于OCR的項(xiàng)目,所以便想用Java做一個(gè)小工具,實(shí)現(xiàn)圖片的文字識(shí)別功能,于是我便開(kāi)始了項(xiàng)目

    2024年02月02日
    瀏覽(26)
  • 第十九篇【傳奇開(kāi)心果系列】Python的OpenCV庫(kù)技術(shù)點(diǎn)案例示例:文字識(shí)別與OCR

    第十九篇【傳奇開(kāi)心果系列】Python的OpenCV庫(kù)技術(shù)點(diǎn)案例示例:文字識(shí)別與OCR

    OpenCV文字識(shí)別與OCR:用于識(shí)別圖像中的文字內(nèi)容,并進(jìn)行光學(xué)字符識(shí)別。 OpenCV(Open Source Computer Vision Library)是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)庫(kù),提供了豐富的圖像處理計(jì)算機(jī)視覺(jué)算法。雖然CV 本身并不包含專門(mén)的 OCR(Optical Character Recognition,光學(xué)字符識(shí)別)功能,但可以配合其他

    2024年02月20日
    瀏覽(29)
  • 【Opencv】PIL Opencv 向圖片寫(xiě)入文字并旋轉(zhuǎn)文字,Opencv圖片旋轉(zhuǎn)不截?cái)?,Opencv圖片旋轉(zhuǎn)不裁剪

    【Opencv】PIL Opencv 向圖片寫(xiě)入文字并旋轉(zhuǎn)文字,Opencv圖片旋轉(zhuǎn)不截?cái)啵琌pencv圖片旋轉(zhuǎn)不裁剪

    剛性變換: 只有物體的位置(平移變換)和朝向(旋轉(zhuǎn)變換)發(fā)生改變,而形狀不變,得到的變換稱為剛性變換。剛性變換是最一般的變換。 使用透視變換,文字會(huì)扭曲失真。剛性變換就不會(huì)。 一些介紹: https://blog.csdn.net/liuweiyuxiang/article/details/86510191 創(chuàng)建一張空?qǐng)D寫(xiě)文字: 旋轉(zhuǎn)

    2024年02月11日
    瀏覽(16)
  • 【Python ? 圖片識(shí)別】pytesseract快速識(shí)別提取圖片中的文字

    【Python ? 圖片識(shí)別】pytesseract快速識(shí)別提取圖片中的文字

    提示:本文多圖,請(qǐng)手機(jī)端注意流量。 利用python做圖片識(shí)別,識(shí)別提取圖片中的文字會(huì)有很多方法,但是想要簡(jiǎn)單一點(diǎn)怎么辦,那就可以使用tesseract識(shí)別引擎來(lái)實(shí)現(xiàn),一行代碼就可以做到提取圖片文本。 本程序用到了兩個(gè)python庫(kù),pytesseract和PIL,所以先來(lái)安裝。 運(yùn)行以下命

    2024年02月02日
    瀏覽(29)
  • python-圖片文字識(shí)別

    兩種方法 1. 第一種方法 2. 第二種方法

    2024年02月15日
    瀏覽(19)
  • 識(shí)別圖片中的文字

    識(shí)別圖片中的文字

    PearOCR 是一款免費(fèi)無(wú)限制網(wǎng)頁(yè)版文字識(shí)別工具。 優(yōu)點(diǎn)如下: 免費(fèi):完全免費(fèi),沒(méi)有任何次數(shù)、大小限制,可以無(wú)限使用; 安全:全部數(shù)據(jù)本地運(yùn)算,所有圖片均不會(huì)被上傳; 智能:基于深度學(xué)習(xí)訓(xùn)練得到的模型,擁有強(qiáng)大的識(shí)別能力; 易用:無(wú)需安裝,即點(diǎn)即用,支持識(shí)別

    2024年02月11日
    瀏覽(21)
  • 【實(shí)操】python opencv將圖片合成視頻,并插入音頻

    簡(jiǎn)介:將一組圖片合成視頻,并插入音頻。用到opencv,ffmpy,pydub等庫(kù)。 目錄 一、統(tǒng)一圖片大小及類(lèi)型,并按數(shù)字排序 二、圖片合成視頻 三、音頻的合并與剪裁 四、音視頻融合 opencv基本使用 python對(duì)不同尺寸圖像改成同一尺寸圖像_自動(dòng)化所副鹽的博客-CSDN博客 如何將多張圖

    2024年01月16日
    瀏覽(50)
  • 華為手機(jī)怎么識(shí)別提取圖片文字?APP一鍵識(shí)別

    華為手機(jī)怎么識(shí)別提取圖片文字?APP一鍵識(shí)別

    平時(shí)我們用手機(jī)會(huì)接觸到形形色色的圖片文件,其中有一部分保存著咱們需要的文字信息。如果我們是華為手機(jī)怎么識(shí)別提取圖片文字呢?給大伙介紹兩種方式,有同樣需求的小伙伴接著往下瀏覽吧。 1.“智慧識(shí)屏” 華為手機(jī)自帶的“智慧識(shí)屏”可以實(shí)現(xiàn)識(shí)別提取圖片文字,

    2024年02月12日
    瀏覽(30)
  • 使用python進(jìn)行圖片的文字識(shí)別

    使用python進(jìn)行圖片的文字識(shí)別

    Tesseract OCR 是一款由 Google 團(tuán)隊(duì)開(kāi)發(fā)的開(kāi)源 OCR(Optical Character Recognition,光學(xué)字符識(shí)別)引擎,用于將圖片、PDF 等格式中的文本轉(zhuǎn)換為可編輯的文本格式。自 1985 年首次發(fā)布以來(lái),它已經(jīng)經(jīng)歷了多個(gè)版本和改進(jìn),并成為目前最受歡迎的 OCR 引擎之一。 Tesseract OCR 支持多種語(yǔ)言,

    2024年02月09日
    瀏覽(29)
  • Python識(shí)別圖片中的文字

    Python識(shí)別圖片中的文字

    不知道大家有沒(méi)有遇到過(guò)這樣的問(wèn)題,就是在某個(gè)軟件或者某個(gè)網(wǎng)頁(yè)里面有一篇文章,你非常喜歡,但是不能復(fù)制?;蛘呦癜俣任臋n一樣,只能復(fù)制一部分,這個(gè)時(shí)候我們就會(huì)選擇截圖保存。但是當(dāng)我們想用到里面的文字時(shí),還是要一個(gè)字一個(gè)字打出來(lái)。那么我們能不能直接

    2024年01月18日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包