2016-11-09 5 views
1

I-Code verwenden für die spätere Verwendung Bildpixel mit wichtigen Informationen zur Liste - Rot, Grün, Blau, X, Y.Dividieren Bild in Blöcke

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 

gedruckten Datum:

 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]] 

Aber Es druckt ganze Bilddaten nicht in Blöcken. Wie bekomme ich diese Daten in 2x2 Blöcken, 4 Pixel Information im Block? Wie folgt aus:

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-Block die folgenden Indizes hat X = [0, 0, 1, 1], Y = [0, 1, 1, 0]. und nicht wie du erwähnt hast –

+0

oder vielleicht X = [0, 0, 1, 1], Y = [0, 1, 0, 1] –

+0

und auch der Ausgang ist 4d, weil jeder 2x2 Block im Bild 4x5 Matrix hat. –

Antwort

1

fügen Sie den folgenden Code:

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) 

mein Bild nur:

 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]] ... 

wendet sich an:

[[[[ 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

Danke Ophir, es scheint genau gemacht, was ich brauche, bitte könntest du überprüfen, ob ich die Ausgabe richtig verstehe zuerst 3 Werte R, G, B was für steht 4. Wert? Die unteren Einträge sind X und 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

siehe meine bearbeitet Antwort. –