2016-11-09 68 views
1

我使用的代码列出与供以后使用的重要信息图像像素 - 红,绿,蓝,X,Y鸿沟图像进行分块

import numpy as np 
from scipy.misc import imread 

im = imread("image.jpg") 

indices = np.dstack(np.indices((im.shape[:2]))) 
data = np.concatenate((im, indices), axis=-1) 
print data 

打印数据:

 R G B X Y 
    [[[237 233 234 0 0] 
     [235 231 232 0 1] 
     [243 234 237 0 2] 
     ..., 
     [236 232 233 0 507] 
     [233 229 230 0 508] 
     [236 232 233 0 509]] 

但它不是以块的形式打印整个图像数据。如何在2x2块中获取这些数据,块中是否有4个像素信息?就像这样:

R G B X Y 
[[[237 233 234 0 0] 
    [235 231 232 0 1] 
    [243 234 237 0 2] 
    [243 234 257 0 3]] 
+0

的2x2块具有以下指数X = [0,0,1,1],Y = [0,1,1,0]。而不是像你提到的 –

+0

或者可能X = [0,0,1,1],Y = [0,1,0,1] –

+0

,并且输出也是4d,因为图像中的每个2x2块具有4x5矩阵。 –

回答

1

添加以下代码:

a = data[::2, ::2, :] 
b = data[::2, 1::2, :] 
c = data[1::2, ::2, :] 
d = data[1::2, 1::2, :] 
e = np.stack([a, b, c, d], axis=3) 
print(e) 

使用我的形象:

 R G B  X Y 
[[[ 47 124 206 0 0] 
    [ 52 124 206 0 1] 
    [ 53 126 205 0 2] 
    ..., 
    [ 74 129 211 0 1021] 
    [ 73 130 211 0 1022] 
    [ 69 132 211 0 1023]] 

[[ 47 124 206 1 0] 
    [ 51 123 205 1 1] 
    [ 53 126 205 1 2] 
    ..., 
    [ 75 130 212 1 1021] 
    [ 73 130 211 1 1022] 
    [ 69 130 210 1 1023]] ... 

变为:

[[[[ 47 52 47 51] R 
    [ 124 124 124 123] G 
    [ 206 206 206 205] B 
    [ 0 0 1 1] X 
    [ 0 1 0 1]] Y 

    [[ 53 58 53 58] R 
    [ 126 125 126 125] G 
    [ 205 204 205 204] B 
    [ 0 0 1 1] X 
    [ 2 3 2 3]] Y 

    [[ 64 71 64 70] R 
    [ 127 126 127 127] G 
    [ 206 208 206 208] B 
    [ 0 0 1 1] X 
    [ 4 5 4 5]] Y 

    ..., 
+0

谢谢Ophir它看起来完全正是我需要的,请你能检查我理解输出正确的第一个3个值R,G,B什么是站立第四值?底部条目是X和Y? R G B? [[237 235 238 237] [233 231 234 233] [234 232 235 234] [0 0 1 1] X [0 1 0 1]] Y R G B? [[243 240 244 240] [234 231 235 231] [237 234 238 234] [0 0 1 1] X [2 3 2 3]] Y – Streem

+0

请参阅我已编辑的答案。 –