Je veux savoir comment parcourir en boucle tous les pixels d'une image. J'ai essayé ceci:
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
Il imprime un ensemble vertical de nombres qui ne se présente pas sous la forme d'un tableau. Je reçois également un tableau hors exception. S'il vous plaît suggérer une méthode.
Accéder à un pixel spécifique en Python
import cv2
image = cv2.imread("sample.jpg")
pixel= image[200, 550]
print pixel
sortie: [73 89 102]
Je ne vois pas quel est le but de votre variable x. Tu n'en as pas besoin.
Utilisez simplement:
for i in range(rows):
for j in range(cols):
k = img[i,j]
print k
qui imprimera en effet un ensemble vertical de nombres. Si vous souhaitez modifier les valeurs des pixels, utilisez img.itemset()
. http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html
Si vous voulez imprimer le tableau entier, utilisez print(img)
L'accès à l'aide d'un index de tableau sera lent avec un tableau numpy.
Vous pouvez utiliser la méthode item()
pour accéder et itemset
pour effectuer des modifications.
Par exemple
for i in range(0,img.shape[0]):
for j in range(0,img.shape[1]):
pixel = img.item(i, j)
print pixel
Essaye ça:
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
Tu peux le faire
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
}
}
Ce code vous donnera les valeurs de pixels dans un tableau 'k' en passant par boucle.
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
Le tableau vertical correspond aux valeurs de canal RVB (Reg, Vert, Bleu) de l’image. Si vous voulez une valeur unique pour le pixel, vous voudrez peut-être d'abord convertir l'image en niveaux de gris. Cela dépend vraiment de votre application et de ce que vous voulez faire avec l'image. La conversion en niveaux de gris n'est qu'une approche.
Pour convertir en niveaux de gris
grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Certaines opérations de base sont indiquées dans documentation
vous lisez l'image en niveaux de gris
img = cv2.imread ('D:\Project\Capture1.jpg', 0)
ici tu n'auras que l'intencity