0

画像からベンガル数字を検出する必要があるプロジェクトがあります。スペースありとスペースなしの数字のような実験をすることにしました。私のpythonプログラムは、スペース画像からすべての数字を検出できます。

スペースなしで画像を指定すると問題が発生しました。前回のように番号をスムーズにカットできませんでした。

ここに私のコードがあります

import cv2

image = cv2.imread("number.png")
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) 
_,thresh = cv2.threshold(gray,70,255,cv2.THRESH_BINARY_INV) 
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
dilated = cv2.dilate(thresh,kernel,iterations = 0) 
_,contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) 

i=5
for contour in contours:

    [x,y,w,h] = cv2.boundingRect(contour)

    cv2.imwrite(str(i)+".jpg",image[y:y+h,x:x+h])
    i=i+1

最初は輪郭を見つけるために膨張を使用しましたが、スペース画像のない数値では機能しませんでした。次に、直接脱穀出力を使用し、その後、ほとんどの数値を取得しましたが、輪郭領域が他の数値の一部で数値を検出するため、それらを完全にカットできませんでした。2番目の画像にはスペースがありませんでしたが、それでも2つの数字は互いに接触していませんでした. では、なぜこのような出力が得られるのでしょうか?

スペースあり:

スペースあり

スペースなし:

スペースなし

4

1 に答える 1

0

残念ながら、長方形の部分を切り取ったときに、x:x+w の代わりに x:x+h を追加したことに気づきませんでした。それが主な問題です。それを変更した後、プログラムは正常に機能しました。ごめん。

于 2016-10-14T03:15:49.933 に答える