2016-07-03 3 views
1

numpy ndarray 데이터 구조로 이미지 조작 및 이미지 표시를위한 matplotlib에 대한 기본적인 내용을 테스트하고 있습니다. 나는 내 픽셀을 저장하는 np.zeros ((n, m)) 함수로 2 차원 배열을 만들었습니다. 일을 쉽게 유지합니다. 단지 그레이 스케일로 작업 중이므로 한 픽셀 만 표현하면됩니다.numpy 및 matplotlib을 사용한 기본 이미지 처리

import numpy as np 
import matplotlib.pyplot as plt 

matrix= np.zeros((4,4)) 
print(matrix) 
plt.matshow(matrix, cmap=plt.cm.gray) #plot matrix 

matrix+=128 #increase each pixel value by 128 
print(matrix) #print the content of matrix 
plt.matshow(matrix, cmap=plt.cm.gray) #plot matrix 

내가이 코드에서 기대하는 것은 각각의 "픽셀"값 0을 가지고 있기 때문에 첫 번째 플롯은 완전히 검은 색이 될 것입니다, 그리고 문제는 여기에 없습니다 :이 내 코드입니다. 그런 다음 픽셀을 0에서 128로 증가시켜 두 번째 플롯이 완전히 회색이어야하지만 여전히 검은 색입니다. 작업은 실행되지 않지만 행렬은 효과적으로 변경되었습니다 (인쇄 기능에서 확인).

그래서 내가 "수동으로"그냥 픽셀을 수정하려고 :

matrix[0,0]=255 
matrix[0,3]=255 
matrix[3,0]=255 
matrix[3,3]=255 

plt.matshow(matrix, cmap=plt.cm.gray) #plot matrix 

이제 4 픽셀이 흰색입니다. 내가 누락 된 부분이 몇 가지 있는데, ndarray에 대한 몇 가지 사항과 관리 방법이 관련이 있다고 생각합니다.

왜 이런 일이 발생하는지 설명 할 수있는 사람이 있습니까? 감사합니다

답변

2

기본적으로 컬러 맵의 색상은 플롯 할 데이터의 최소 및 최대 값에 매핑됩니다. 이 값을 무시하려면 vminvmax을 입력하십시오.

plt.matshow(matrix, cmap=plt.cm.gray, vmin=0, vmax=255) 
관련 문제