2017-09-06 18 views
0

나는 012STpython으로 MNIST를 사용하여 자필 자릿수를 예측하려고합니다. 지금 당장은 자른 이미지를 프로그램에 입력해야합니다. MNIST 데이터 셋 형식으로 만드는 추가 처리는 다음 함수를 사용하여 수행되지만 입력으로 주어진 임의의 이미지를 자동 자르기하는 방법은 무엇입니까?python - 자필 자국의 이미지 자르기

def imageprepare(argv): 
    """ 
    This function returns the pixel values. 
    The imput is a png file location. 
    """ 
    im = Image.open(argv).convert('L') 
    width = float(im.size[0]) 
    height = float(im.size[1]) 
    newImage = Image.new('L', (28, 28), (255)) #creates white canvas of 28x28 pixels 

    if width > height: #check which dimension is bigger 
     #Width is bigger. Width becomes 20 pixels. 
     nheight = int(round((20.0/width*height),0)) #resize height according to ratio width 
     if (nheigth == 0): #rare case but minimum is 1 pixel 
      nheigth = 1 
     # resize and sharpen 
     img = im.resize((20,nheight), Image.ANTIALIAS).filter(ImageFilter.SHARPEN) 
     wtop = int(round(((28 - nheight)/2),0)) #caculate horizontal pozition 
     newImage.paste(img, (4, wtop)) #paste resized image on white canvas 
    else: 
     #Height is bigger. Heigth becomes 20 pixels. 
     nwidth = int(round((20.0/height*width),0)) #resize width according to ratio height 
     if (nwidth == 0): #rare case but minimum is 1 pixel 
      nwidth = 1 
     # resize and sharpen 
     img = im.resize((nwidth,20), Image.ANTIALIAS).filter(ImageFilter.SHARPEN) 
     wleft = int(round(((28 - nwidth)/2),0)) #caculate vertical pozition 
     newImage.paste(img, (wleft, 4)) #paste resized image on white canvas 

    #newImage.save("sample.png") 

    tv = list(newImage.getdata()) #get pixel values 

    #normalize pixels to 0 and 1. 0 is pure white, 1 is pure black. 
    tva = [ (255-x)*1.0/255.0 for x in tv] 
    return tva 

답변

0

OpenCV 등고선을 사용하면 실제 이미지에서 잠재적 인 숫자를 찾을 수 있습니다. 일부 기법은 작업중인 실제 데이터에 따라 다릅니다. 몇 가지 지침을 줄 수있는 http://www.pyimagesearch.com/2017/02/13/recognizing-digits-with-opencv-and-python/ 에 숫자 후보 위치의 예제가 있습니다.

그러나 모든 유럽어 스크립트에서 모든 숫자가 연속적이며 뚜렷한 것으로 간주되지만 두 가지 점이 모든 스크립트에 적용되는지는 모르겠으므로 일부 스크립트에서는 문제가 발생할 수 있습니다.