2017-01-14 1 views
1

원본 이미지 (모양과 dtype이 ((1024, 1024, 3), dtype('uint8')) 인)를 1D 배열로 먼저 변환하여 해당 1D 배열을 하나의 관찰로 트레이닝 세트에 입력 할 수 있습니다.파이썬에서 이미지 행렬을 변형합니다

이제 해당 1D 배열을 원래 형식으로 변환하고 싶습니다.

원래 이미지를 1D 배열로 변환하는 데 num37에서 사용할 수있는 flatten() 함수를 사용했습니다.

In[80]: t = misc.imread('b.png') #to read the image 

In[81]: t.shape, t.dtype 
Out[81]: ((1024, 1024, 3), dtype('uint8')) 

#To convert the above image into 1D array 

In[82]: t.flatten() 
Out[82]: array([ 5, 40, 121, ..., 130, 110, 89], dtype=uint8) 

가 지금은 (모양 즉 (1024,1024,3)) 원래 행렬에 (t.flattern() 결과) 위의 행렬을 변환 할 : 다음은 코드입니다.

내가 무엇을해야하는지 알려주세요.

업데이트 : 나는 t.flatten의 모양을 확인하고이 나옵니다

In[86]: p=t.flatten() 
In[87]: p.shape 
Out[86]:(6291456,) 

그러나 = (* 3 * 2 1024 * 1024) 6291456. 이제이 추가 용어 (예 :)가 어디에서 나오는 지 혼란 스럽습니다.

또한 reshape 명령을 사용했지만 명령을 실행하면 오류가 발생합니다. 사용 reshape

l=p.reshape(1024,1024,3) 

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-89-b1ab41666df7> in <module>() 
----> 1 l=p.reshape(1024,1024,3) 

ValueError: total size of new array must be unchanged 
+0

그냥'reshape'? – Divakar

+0

@Divaker 나는 그것을 사용했지만 모호한 에러를 보여주고있다. – Lok

+0

주어진 초기 형태의 배열에 대해'(6291456,)'이되는'p.shape'를 재현 할 수 없다. – akilat90

답변

0

, 원하는 모양

In [93]: a = np.zeros((10,10,3)) 
In [94]: a.shape 
Out[94]: (10, 10, 3) 

In [95]: b = a.flatten() 
In [96]: b.shape 
Out[96]: (300,) 

In [97]: c = b.reshape(10,10,3) 
In [98]: c.shape 
Out[98]: (10, 10, 3) 
+0

다시 내 문제를 업데이트 해주세요. – Lok

관련 문제