gpt4 book ai didi

python - 使用opencv识别OCR期间的元音字符

转载 作者:行者123 更新时间:2023-12-02 17:36:10 27 4
gpt4 key购买 nike

我正在处理以下多行图像。
enter image description here

我正在使用以下opencv代码按顺序提取每一行和每个瑞典语单词。但是,瑞典语变位字符无法正确识别。像ä分别标识为..a一样。我该如何保存?这也适用于i,它被标识为.|(我无法正确键入,但它是i',上面没有'。')

以下是我正在使用的python代码,

import cv2
import numpy as np
image = cv2.imread("D:\\Users\\Downloads\\CaptureMultiLines.jpg")
cv2.imshow('orig',image)
# image = cv2.resize(image_original,None,fx=4, fy=4, interpolation = cv2.INTER_CUBIC)

#grayscale
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
# original_resized = cv2.resize(gray, (0,0), fx=.2, fy=.2)
cv2.imshow('gray',gray)
cv2.waitKey(0)

#Remove Salt and pepper noise
saltpep = cv2.fastNlMeansDenoising(gray,None,9,13)
# original_resized = cv2.resize(saltpep, (0,0), fx=.2, fy=.2)
cv2.imshow('Grayscale',saltpep)
cv2.waitKey(0)

#blur
blured = cv2.blur(saltpep,(3,3))
# original_resized = cv2.resize(blured, (0,0), fx=.2, fy=.2)
cv2.imshow('blured',blured)
cv2.waitKey(0)

#binary
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)
# original_resized = cv2.resize(thresh, (0,0), fx=.2, fy=.2)
cv2.imshow('Threshold',thresh)
cv2.waitKey(0)

#dilation
kernel = np.ones((5,100), np.uint8)
img_dilation = cv2.dilate(thresh, kernel, iterations=1)
# original_resized = cv2.resize(img_dilation, (0,0), fx=.2, fy=.2)
cv2.imshow('dilated',img_dilation)
cv2.waitKey(0)

#find contours
im2,ctrs, hier = cv2.findContours(img_dilation.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

#sort contours
sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[1])

for i, ctr in enumerate(sorted_ctrs):

# Get bounding box
x, y, w, h = cv2.boundingRect(ctr)

# Getting ROI
roi = image[y:y+h, x:x+w]

# # show ROI
cv2.imshow('segment no:' +str(i),roi)
cv2.waitKey(0)


im = cv2.resize(roi,None,fx=4, fy=4, interpolation = cv2.INTER_CUBIC)
ret_1,thresh_1 = cv2.threshold(im,127,255,cv2.THRESH_BINARY_INV)
# original_resized = cv2.resize(thresh, (0,0), fx=.2, fy=.2)
cv2.imshow('Threshold_1',thresh_1)
cv2.waitKey(0)
thresh_1=cv2.cvtColor(thresh_1, cv2.COLOR_BGR2GRAY);

#find contours
im,ctrs_1, hier = cv2.findContours(thresh_1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

#sort contours
sorted_ctrs_1 = sorted(ctrs_1, key=lambda ctr: cv2.boundingRect(ctr)[0])

for j, ctr_1 in enumerate(sorted_ctrs_1):

# Get bounding box
x_1, y_1, w_1, h_1 = cv2.boundingRect(ctr_1)

# Getting ROI
roi_1 = thresh_1[y_1:y_1+h_1, x_1:x_1+w_1]

# # show ROI
cv2.imshow('Line no: ' + str(i) + "Column no : " +str(j),roi_1)
cv2.waitKey(0)


# original_resized = cv2.resize(image, (0,0), fx=.2, fy=.2)
# cv2.imshow('marked areas',original_resized)
cv2.imshow('marked areas',image)
cv2.waitKey(0)

最佳答案

这会给你想要的。

这是我添加的代码段:

# dilation
kernel = np.ones((10, 1), np.uint8)
joined = cv2.dilate(thresh_1, kernel, iterations=1)
cv2.imshow('joined', joined)
cv2.waitKey(0)

这是完整的代码:
import cv2
import numpy as np
image = cv2.imread("D:\\Users\\Downloads\\CaptureMultiLines.jpg")
cv2.imshow('orig',image)
# image = cv2.resize(image_original,None,fx=4, fy=4, interpolation = cv2.INTER_CUBIC)

#grayscale
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
# original_resized = cv2.resize(gray, (0,0), fx=.2, fy=.2)
cv2.imshow('gray',gray)
cv2.waitKey(0)

#Remove Salt and pepper noise
saltpep = cv2.fastNlMeansDenoising(gray,None,9,13)
# original_resized = cv2.resize(saltpep, (0,0), fx=.2, fy=.2)
cv2.imshow('Grayscale',saltpep)
cv2.waitKey(0)

#blur
blured = cv2.blur(saltpep,(3,3))
# original_resized = cv2.resize(blured, (0,0), fx=.2, fy=.2)
cv2.imshow('blured',blured)
cv2.waitKey(0)

#binary
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)
# original_resized = cv2.resize(thresh, (0,0), fx=.2, fy=.2)
cv2.imshow('Threshold',thresh)
cv2.waitKey(0)

#dilation
kernel = np.ones((5,100), np.uint8)
img_dilation = cv2.dilate(thresh, kernel, iterations=1)
# original_resized = cv2.resize(img_dilation, (0,0), fx=.2, fy=.2)
cv2.imshow('dilated',img_dilation)
cv2.waitKey(0)

#find contours
im2,ctrs, hier = cv2.findContours(img_dilation.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

#sort contours
sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[1])

for i, ctr in enumerate(sorted_ctrs):

# Get bounding box
x, y, w, h = cv2.boundingRect(ctr)

# Getting ROI
roi = image[y:y+h, x:x+w]

# # show ROI
cv2.imshow('segment no:' +str(i),roi)
cv2.waitKey(0)


im = cv2.resize(roi,None,fx=4, fy=4, interpolation = cv2.INTER_CUBIC)
ret_1,thresh_1 = cv2.threshold(im,127,255,cv2.THRESH_BINARY_INV)
# original_resized = cv2.resize(thresh, (0,0), fx=.2, fy=.2)
cv2.imshow('Threshold_1',thresh_1)
cv2.waitKey(0)

# dilation
kernel = np.ones((10, 1), np.uint8)
joined = cv2.dilate(thresh_1, kernel, iterations=1)
cv2.imshow('joined', joined)
cv2.waitKey(0)

joined=cv2.cvtColor(joined, cv2.COLOR_BGR2GRAY);

#find contours
im,ctrs_1, hier = cv2.findContours(joined, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

#sort contours
sorted_ctrs_1 = sorted(ctrs_1, key=lambda ctr: cv2.boundingRect(ctr)[0])

for j, ctr_1 in enumerate(sorted_ctrs_1):

# Get bounding box
x_1, y_1, w_1, h_1 = cv2.boundingRect(ctr_1)

# Getting ROI
roi_1 = thresh_1[y_1:y_1+h_1, x_1:x_1+w_1]

# # show ROI
cv2.imshow('Line no: ' + str(i) + "Column no : " +str(j),roi_1)
cv2.waitKey(0)


# original_resized = cv2.resize(image, (0,0), fx=.2, fy=.2)
# cv2.imshow('marked areas',original_resized)
cv2.imshow('marked areas',image)
cv2.waitKey(0)

关于python - 使用opencv识别OCR期间的元音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com