필로와 함께 Python 3.3을 사용하고 있고, 각각의 이미지에 대해 모든 픽셀 색상을 분석하고 각 색상이 흰색 또는 검정에 가장 가까운 지 계산하려고합니다. 이 수식을 사용하여 유클리드 거리로 시도했습니다.목록의 각 항목에 대한 유클리드 거리를 계산합니다.
>>>a,b=(127,255) #color value of pixel at position (1,1)
>>>whitedist=sqrt((a-255)**2 + (b-255)**2)
>>>print (whitedist)
128.0
픽셀은 그레이 스케일 이미지로 작업하기 때문에 두 값을 갖습니다. 것은 물론 나는 128 * 128 영상의 각 픽셀에 대해이 작업을 수행 할 수없는, 그래서 내가주기 "를"내 첫 번째를 작성하는 시도 : 이것은 완전히 바보 같은 시도였다
colors=im.getdata() #all pixel values
for item in col:
for item in range (0, 127):
print ("B") #if the value is between 0 and 127 the color is nearer to black
, 파이썬은 갔다 무한 루프에 들어가서 그만 두어야했습니다. 내 문제는 내가해야할 일에 대한 원시 아이디어가 있지만, 파이썬을 너무 잘 사용하여 내 추론을 코드로 변환 할 수 없다는 것이다. 내 추론은 완전히 틀린 것은 아니지만 코드로 변환 할 방법을 찾을 수는 없다고 생각합니다.
list (im.getdata())는 두 개의 값을 포함하는 각 픽셀에 대해 하나의 튜플을 반환하기 때문에 각 튜플에 수식 whitedist=sqrt((a-255)**2 + (b-255)**2)
을 적용하고 수식의 결과 < 128이면 픽셀을 "dark"로 태그 지정하고, 128보다 크면 픽셀을 "light"로 태그 지정합니다. 그런 다음 모든 어둡고 밝은 픽셀을 세고 이미지에 어둡거나 밝은 픽셀이 있는지 확인해야합니다.
주기를 사용하면이 작업을 수행하는 것이 완전히 잘못 되었습니까?
_ "그레이 스케일 이미지로 작업하기 때문에 픽셀 값이 두 개 있습니다."_ 정말로 틀니? 나는 그레이 스케일 이미지가 두 개가 아니라 하나의 채널만을 가지고 있다고 생각했다. 3 개의 채널 이미지는 적색, 녹색 및 청색의 강도 각각에 대해 하나의 수를 갖는다. 하나의 채널 이미지는 밝기에 대해 하나의 번호를가집니다. 두 숫자는 무엇을 나타낼까요? – Kevin
이전에 변환했기 때문에 회색 음영이라고 확신하지만 두 숫자가 나타내는 내용이 확실하지 않습니다. 각 픽셀에는 두 개의 숫자가 있지만 두 번째 숫자는 항상 255이므로 첫 번째 것은 밝기이어야합니다. – Mikhaylova
첫 번째 숫자는 밝기이고 두 번째 숫자는 투명도입니다. 그렇다면 255는이 문맥에서 단지 "불투명"을 의미 할뿐입니다. – Kevin