3

저는 Image Processing Project에서 일하고 있습니다. 저는 Python 및 PIL을 사용하는 초보자입니다. 어떤 도움을 주시면 감사하겠습니다.파이썬에서 이미지의 픽셀 값을 변경하려면 어떻게해야합니까?

그래서, 내가하고있는 일은 별과 소음이있는 공간 이미지가 있다는 것입니다. 내가 원하는 것은 더 밝은 픽셀 만 유지하고 둔한 것을 필터링하는 것입니다. 당분간, 이것은 소음을 없애려고하는 나의 기본적인 단계입니다. 이미지 데이터를 조사한 결과, 205의 값이 임계 값을 유지하려는 가능성이 상당히 높은 것으로 나타났습니다.

그래서 코드에서 내가하고있는 것은 이미지를 열고 205를 포함하는 픽셀 값을 검정색으로 변경하는 것입니다. 결과 이미지 그냥 평범한 흰색 화면입니다,

from PIL import Image 
im = Image.open('nuvfits1.png') 
pixelMap = im.load() 

img = Image.new(im.mode, im.size) 
pixelsNew = im.load() 
for i in range(img.size[0]): 
    for j in range(img.size[1]): 
     if 205 in pixelMap[i,j]: 
      pixelMap[i,j] = (0,0,0,255) 
     pixelsNew[i,j] = pixelMap[i,j] 
im.close() 
img.show()  
img.save("out.tif") 
img.close() 

문제는 다음과 같습니다 다음은 같은 코드입니다. 나는 무엇을 잘못 했는가?

답변

1

당신은 어리석은 실수를했습니다. 입력란에 6을 입력했습니다. pixelsNew = im.load() pixelsNew = img.load() 대신 이 표시됩니다. 블록가 다른 블록 다음에 할 필요가있는 경우

from PIL import Image 
im = Image.open('nuvfits1.png') 
pixelMap = im.load() 

img = Image.new(im.mode, im.size) 
pixelsNew = img.load() 
for i in range(img.size[0]): 
    for j in range(img.size[1]): 
     if 205 in pixelMap[i,j]: 
      pixelMap[i,j] = (0,0,0,255) 
     pixelsNew[i,j] = pixelMap[i,j] 
im.close() 
img.show()  
img.save("out.tif") 
img.close() 
+0

제안 해 주셔서 감사합니다. 나는 그랬지만 지금은 편집 된 이미지가 아니라 같은 이미지를 다시 얻습니다. –

4

는, 있도록 기준을 충족하지 않는다 "정상적인"픽셀은 원래 값을 유지합니다.

from PIL import Image 
im = Image.open('leaf.jpg') 
pixelMap = im.load() 

img = Image.new(im.mode, im.size) 
pixelsNew = img.load() 
for i in range(img.size[0]): 
    for j in range(img.size[1]): 
     if 205 in pixelMap[i,j]: 
      pixelMap[i,j] = (0,0,0,255) 
     else: 
      pixelsNew[i,j] = pixelMap[i,j] 
img.show() 

위의 코드는 나에게 다음과 같은 결과 주었다

입력 이미지를

Input

당신은 기본적으로 새로운 이미지가 필요

Output

0

출력 이미지 제거 된 잡음 픽셀입니다 .New. 그래서 pixelMap if 205 in pixelMap[i,j]에서 이러한 케이스를 찾을 때마다 해당 값을 0에서 pixelsNew pixelNew[i,j] = (0, 0, 0, 255)으로 설정하십시오. 그렇지 않으면 pixelMap에서 픽셀 값을 복사하십시오. pixelsNew[i,j] = pixelMap[i,j]

from PIL import Image 
im = Image.open('nuvfits1.png') 
pixelMap = im.load() 

img = Image.new(im.mode, im.size) 
pixelsNew = img.load() 
for i in range(img.size[0]): 
    for j in range(img.size[1]): 
     if 205 in pixelMap[i,j]: 
      pixelsNew[i,j] = (0,0,0,255) 
     else: 
      pixelsNew[i,j] = pixelMap[i,j] 
im.close() 
img.show()  
img.save("out.tif") 
img.close() 
+2

간단하게 코드를 설명해야합니다. –

+0

완료! 지금 확인하십시오. –

관련 문제