2016-08-07 4 views
0

python matplotlib 함수가 매우 유용하다는 것을 알았습니다. 각 개별 픽셀을 고정하면 이미지 처리가 훨씬 더 좋습니다.python matplotlib에 의한 픽셀 조작

픽셀 단위로 처리하고 싶습니다. 문제는 "handles.append"함수를 사용한 후 이미지 여백이 변경된다는 것입니다.

from skimage.io import imread 

import matplotlib.pyplot as plt 

img = imread('uk_figure.png') 

my_dpi = 96 
plt.figure(figsize=(800/my_dpi, 800/my_dpi), dpi = my_dpi, frameon=False) 

fig1 = plt.figure(1) 
fig1.set_figheight(40) #image size is set here, pixel = 8 *100 = 800 
fig1.set_figwidth(40) #image size is set here, pixel = 8 *100 = 800 

imgplot = plt.imshow(img) 

#to add code below 

plt.axis("off") 
plt.subplots_adjust(left = 0, right =1, top =1, bottom =0) 
plt.savefig("uk_figure_addcolor4.png", pad_inches=0) 

저장된 그림은 원본 이미지와 정확히 동일합니다. 따라서 두 개의 이미지를 픽셀 단위로 처리 할 수 ​​있다고 생각합니다.

이 코드를 추가하면 matplotlib에서 내 이미지의 여백을 자동으로 추가합니다. 따라서, 픽셀 단위 처리가 실패합니다. 고정 픽셀로 이미지를 저장하도록 matplotlib에 지시 할 수있는 방법이 있습니까?

x = [457,458,459,460] 
y = [288,289,290,291] 
handles = [] 
handles.append(plt.scatter(x,y, color='blue', marker='+')) #margin changes after adding this line 

답변

1

축 제한이 변경되어 여백이 추가됩니다. 이미지 크기가 1000 x 1000 픽셀이라면 plt.gca().set_xlim(0, 1000)plt.gca().set_ylim(0, 1000)을 추가하여 문제를 해결할 수 있습니다. plt.gca()은 현재 축을 가져오고 해당 축은 x 및 y 제한을 설정합니다.

참고 : y- 제한을 plt.gca().set_ylim(1000, 0)으로 반전해야 할 수도 있습니다. 이는 matplotlib이 일반적으로 이미지의 왼쪽 위 모서리를 이미지의 원점으로 선택하기 때문입니다. 임의의 데이터를 사용하여 이미지가 뒤집어 졌는지 여부를 알기는 어렵지만 이미지에 동기가 있다면 이미지가 뒤집혀 있는지 여부를 쉽게 알 수 있습니다. 뒤집 으면 위와 같이 ylim을 거꾸로 뒤집습니다.