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

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

使用opencv從驗證碼中提取字母

使用opencv從驗證碼中提取字母

慕容708150 2022-08-25 15:31:51
我試圖從一個特別煩人的驗證碼中檢索字母。我正在嘗試使用opencv2來做到這一點,到目前為止,它并沒有給我帶來驚人的結果。我可能沒有完成正確的操作。
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

使用此代碼,您可以獲得驗證碼中的每個字母。

def inverte(imagem, name):
    imagem = (255 - imagem)
    cv2.imwrite(name, imagem)
imagem = cv2.imread(image_file)
inverte(imagem, '2.png')
image_file = '2.png'image = cv2.imread(image_file)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = cv2.copyMakeBorder(image, 20, 20, 20, 20, cv2.BORDER_REPLICATE)
thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
letter_image_regions = []for contour in contours:
    (x, y, w, h) = cv2.boundingRect(contour)    if w / h > 1.25:
        half_width = int(w / 2)
        letter_image_regions.append((x, y, half_width, h))
        letter_image_regions.append((x + half_width, y, half_width, h))    else:
        letter_image_regions.append((x, y, w, h))

letter_image_regions = sorted(letter_image_regions, key=lambda x: x[0])for letter_bounding_box in letter_image_regions:
    x, y, w, h = letter_bounding_box
    letter_image = image[y - 2:y + h + 2, x - 2:x + w + 2]
    letter_image = resize_to_fit(letter_image, 20, 20)
    letter_image = np.expand_dims(letter_image, axis=2)
    letter_image = np.expand_dims(letter_image, axis=0)


查看完整回答
反對 回復 2022-08-25
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

這是調整大小以適應功能


import cv2

import imutils



def resize_to_fit(image, width, height):


    # grab the dimensions of the image, then initialize

    # the padding values

    (h, w) = image.shape[:2]


    # if the width is greater than the height then resize along

    # the width

    if w > h:

        image = imutils.resize(image, width=width)


    # otherwise, the height is greater than the width so resize

    # along the height

    else:

        image = imutils.resize(image, height=height)


    # determine the padding values for the width and height to

    # obtain the target dimensions

    padW = int((width - image.shape[1]) / 2.0)

    padH = int((height - image.shape[0]) / 2.0)


    # pad the image then apply one more resizing to handle any

    # rounding issues

    image = cv2.copyMakeBorder(image, padH, padH, padW, padW,

                               cv2.BORDER_REPLICATE)

    image = cv2.resize(image, (width, height))


    # return the pre-processed image

    return image


查看完整回答
反對 回復 2022-08-25
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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