의 크기가 조정 된 이미지를 부드럽게하고, 나는 다음과 같은 운동에 붙어 왔 : 당신은 너무 많은 이미지를 조정 한 후내가 <a href="http://interactivepython.org/runestone/static/thinkcspy/toc.html#" rel="nofollow">How to Think Like a Computer Scientist</a>을 통해 내 방식을 일하고 있어요 파이썬
이이 고르지 보인다. 이미지의 블럭 니스를 줄이는 한 가지 방법은 각 픽셀을 주변 픽셀의 평균 값으로 대체하는 것입니다. 이것은 색상의 변화를 부드럽게하는 효과가 있습니다. 이미지를 매개 변수로 사용하고 이미지를 부드럽게하는 함수를 작성하십시오. 함수는 이전 이미지와 동일한 새 이미지를 반환해야합니다.
자습서는 잘린 이미지 모듈을 제공하지만 필자는 PIL을 사용하지 않고이 문제를 해결할 수 있어야합니다. 이것은 내가 지금까지 가지고있는 것입니다 :
import image
#image provided in tutorial
img = image.Image("luther.jpg")
win = image.ImageWin()
factor = 0
#resize the image
def resize(img, factor):
W = img.getWidth()
H = img.getHeight()
newW = int(W * factor)
newH = int(H * factor)
newImage = image.EmptyImage(newW, newH)
for col in range(newW):
for row in range (newH):
p = img.getPixel(col, row)
newImage.setPixel(col * factor, row * factor, p)
newImage.draw(win)
img = newImage
return img
#smooth out the image
def smooth(img):
newImage = image.EmptyImage(img.getWidth(), img.getHeight())
for col in range(img.getWidth()):
for row in range(img.getHeight()):
p1 = img.getPixel(col, row)
p2 = img.getPixel(col+1, row)
red1 = p1.getRed()
red2 = p2.getRed()
green1 = p1.getGreen()
green2 = p2.getGreen()
blue1 = p1.getBlue()
blue2 = p2.getBlue()
newRed = (red1 + red2)/2
newGreen = (green1 + green2)/2
newBlue = (blue1 + blue2)/2
newPixel = image.Pixel(newRed, newGreen, newBlue)
newImage.setPixel(col, row, newPixel)
newImage.draw(win)
이 함수를 호출하면 "오류 : 할당 전에 참조 된 로컬 변수 red2"가 나타납니다. 나는 인쇄 진술과 함께 줄을 섰다. 이 오류 메시지는 newPixel을 만들려고 할 때까지 반환되지 않습니다. 도움을 주시면 감사하겠습니다.
전체 스택 추적을 게시 할 수 있습니까? 나는이 함수가 그 오류를 어떻게 일으켰는지를 보지 못했다. 아마 그것은 다른 곳에서 오는 것입니다. – user2357112
불행히도, 전체 스택 추적을 게시 할 수 없습니다. 자습서에서 사용되는 activecode 인터프리터가 오류 메시지를 제공하기 때문에 그대로 추적 할 수는 없습니다. (튜토리얼에서 사용 된 이미지 모듈을 설치하는 방법을 알 수 없기 때문에 IDLE에서 스크립트를 실행할 수 없습니다.) – user2684148