2014-01-10 1 views
0

Я хочу, чтобы получить простой список питона из пиксельных цвета из изображения список вывода должен быть monodimensional заказан как:питона Выходного список OpenCV

output = [B1,G1,R1,B2,G2,R2,B3,G3,R3....] 

, чтобы получить данные изображения:

import cv2 
image = cv2.imread('a.png') 
image 
array([[[ 0, 0, 255], 
     [ 0, 0, 255], 
     [ 0, 0, 255]], 

     [[ 0, 255, 0], 
     [ 0, 255, 0], 
     [ 0, 255, 0]], 

     [[255, 0, 0], 
     [255, 0, 0], 
     [255, 0, 0]]], dtype=uint8) 

f = image.flatten() 
f 
[array([ 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 255, 0, 0, 
     255, 0, 0, 255, 0, 255, 0, 0, 255, 0, 0, 255, 0, 

0], DTYPE = uint8)]

есть способ, чтобы получить:

f = [0,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,255,0,0,255,0,0,255,0,0] 
+0

F = F [0], делает эту работу? – M4rtini

+0

возможно: список (f) или f = f.tolist() – Alexis

ответ

1

, так как OpenCV изображения в CV2 являются Numpy массивы, использовать NumPy:

import cv2 
import numpy as np 

# simulate a bgr image: 
>>> a = np.array([[[1,2,3], [4,5,6]],[[1,2,3], [4,5,6]]]) 
>>> a 
array([[[1, 2, 3], 
     [4, 5, 6]], 

     [[1, 2, 3], 
     [4, 5, 6]]]) 
>>> b = np.reshape(a,-1) 
>>> b 
array([1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]) 
0

.tolist() метод любезно посоветовал г-н Абид Rahman

>>> import numpy as np 
>>> f = np.random.randint(0,255,(3,3,3)) 
>>> print(f) 
[[[193 61 68] 
    [223 102 0] 
    [ 45 204 7]] 

[[ 64 193 60] 
    [ 94 157 49] 
    [ 38 116 5]] 

[[ 64 107 197] 
    [225 246 22] 
    [186 102 156]]] 
>>> g = f.flatten() 
>>> print g 
[193 61 68 223 102 0 45 204 7 64 193 60 94 157 49 38 116 5 
    64 107 197 225 246 22 186 102 156] 

>>> g.dtype 
dtype('int32') 
>>> type(g) 
<type 'numpy.ndarray'> 

>>> h = g.tolist() 
>>> print h 
[193, 61, 68, 223, 102, 0, 45, 204, 7, 64, 193, 60, 94, 157, 49, 38, 
116, 5, 64, 107, 197, 225, 246, 22, 186, 102, 156] 
>>> type(h) 
<type 'list'> 

 Смежные вопросы

  • Нет связанных вопросов^_^