Ich möchte wissen, wie alle Pixel eines Bildes durchlaufen werden. Ich habe das versucht:
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 einen vertikalen Satz von Zahlen, der nicht in Form eines Arrays vorliegt. Ich bekomme auch ein Array aus der Ausnahme. Bitte eine Methode vorschlagen.
Zugriff auf bestimmte Pixel in Python
import cv2
image = cv2.imread("sample.jpg")
pixel= image[200, 550]
print pixel
output: [73 89 102]
Ich sehe nicht, was der Zweck Ihrer x-Variablen ist. Du brauchst es nicht.
Verwenden Sie einfach:
for i in range(rows):
for j in range(cols):
k = img[i,j]
print k
was in der Tat einen vertikalen Satz von Zahlen drucken wird. Wenn Sie die Werte der Pixel ändern möchten, verwenden Sie img.itemset()
. http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html
Wenn Sie das gesamte Array drucken möchten, verwenden Sie print(img)
Der Zugriff über den Array-Index wird bei einem numpy-Array langsam.
Sie können die item()
-Methode für den Zugriff und itemset
für die Durchführung von Änderungen verwenden.
Zum Beispiel
for i in range(0,img.shape[0]):
for j in range(0,img.shape[1]):
pixel = img.item(i, j)
print pixel
Versuche dies:
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
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
Du kannst das
for (int y = 0; y<im.rows; y++)
{
for (int x = 0; x<im.cols; x++)
{
Vec3b color = im.at<Vec3b>(Point(x, y));
//you can print color this has the pixel value
}
}
Dieser Code gibt Ihnen die Pixelwerte in einem Array 'k' durch die 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
Das vertikale Array enthält die RGB-Kanalwerte (Reg, Green, Blue) für das Bild. Wenn Sie einen einzelnen Wert für das Pixel wünschen, müssen Sie das Bild zuerst in Graustufen konvertieren. Das hängt wirklich von Ihrer Anwendung ab und davon, was Sie mit dem Bild machen möchten. Das Konvertieren in Graustufen ist nur ein Ansatz.
In Graustufen konvertieren
grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Einige grundlegende Operationen werden in der Dokumentation gezeigt.
sie lesen ein Bild in Graustufen
img = cv2.imread ('D:\Project\Capture1.jpg', 0)
hier wirst du nur Intensität bekommen