2015-03-11 7 views
7

Ich bin neu in der Bildverarbeitung und Python-Sprache. Ich möchte wissen, wie man alle Pixel eines Bildes durchläuft. Ich habe das versucht:Wie greife ich mit opencv-python auf die Pixel eines Bildes zu?

import cv2 
import numpy as np 

x = np.random.randint(0,5,(500,500)) 
img = cv2.imread('D:\Project\Capture1.jpg',0) 
p = img.shape 
print p 
rows,cols = img.shape 

for i in range(rows): 
    for j in range(cols): 
     k = x[i,j] 
     print k 

es druckt eine vertikale Reihe von Zahlen, die nicht in der Form eines Arrays ist. Ich bekomme auch eine Array-Out-of-Bounds-Ausnahme. Bitte schlagen Sie eine Methode vor.

Antwort

0

Das vertikale Array sind die RGB-Kanalwerte (Reg, Grün, Blau) für das Bild. Wenn Sie einen einzelnen Wert für das Pixel wünschen, sollten Sie das Bild zuerst in Graustufen konvertieren. Es hängt wirklich von Ihrer Anwendung ab und was Sie mit dem Bild machen wollen, die Konvertierung in Graustufen ist nur ein Ansatz.

konvertieren

grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

Einige grundlegende Operationen in den in Python documentation

7

Zugang spezifischen Pixel gezeigt

import cv2 
image = cv2.imread("sample.jpg") 
pixel= image[200, 550] 
print pixel 

Ausgang sind in Graustufen: [73 89 102]

1

verwenden das gesamte Array drucken möchten Versuchen:

import numpy as np 
import Image 

image = Image.open("example.png") 
image_data = np.asarray(image) 

for i in range(len(image_data)): 
    for j in range(len(image_data[0])): 
     print(image_data[i][j]) # this row prints an array of RGB color for each pixel in the image 
0
import cv2 
    import numpy as np 

    image = cv2.imread('C:/Users/Asus/Desktop/test.jpg', cv2.IMREAD_COLOR) 

    for x in range (1,480): 
     for y in range (1,640): 

      pixel = image[x,y] 
      print pixel 
+0

Können Sie erklären, warum dies die Lösung ist? Was hat das OP vermisst und was muss er wissen, um diese Lösung zu verstehen? –

0

Sie Bild in Graustufen

img = cv2.imread lesen ('D: \ Project \ Capture1.jpg', 0)

hier erhalten Sie nur intencity

0

Dieser Code gibt Ihnen die Pixelwerte in einem Array 'k' durch Durchlauf der Schleife.

import cv2 
import numpy as np 

img = cv2.imread('sample.jpg',0) 
rows,cols = img.shape 
k = [] 
for i in range(rows): 
    for j in range(cols): 
     k.append(img[i,j]) 
print k 
Verwandte Themen