Как мне получить доступ к пикселям изображения с помощью OpenCV-Python?
Я хочу знать, как перебрать все пиксели изображения. Я попробовал это:
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
Он печатает вертикальный набор чисел, который не имеет форму массива. Я также получаю массив за пределами исключения. Пожалуйста, предложите метод.
ОТВЕТЫ
Ответ 1
Доступ к определенному пикселю в Python
import cv2 image = cv2.imread("sample.jpg") pixel= image[200, 550] print pixel
Ответ 2
Я не понимаю, какова цель вашей переменной x. Тебе это не нужно.
for i in range(rows): for j in range(cols): k = img[i,j] print k
который будет печатать действительно вертикальный набор чисел. Если вы хотите изменить значения пикселей, используйте img.itemset() . http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html
Если вы хотите распечатать весь массив, используйте print(img)
Ответ 3
Доступ с использованием индекса массива будет медленным с пустым массивом.
Вы можете использовать метод item() для доступа и itemset для внесения изменений.
for i in range(0,img.shape[0]): for j in range(0,img.shape[1]): pixel = img.item(i, j) print pixel
Ответ 4
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
Ответ 5
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
Ответ 6
for (int y = 0; y(Point(x, y)); //you can print color this has the pixel value > >
Ответ 7
Вертикальный массив — это значения канала RGB (Reg, Green, Blue) для изображения. Если вам нужно одно значение для пикселя, вы можете сначала преобразовать изображение в оттенки серого. Это действительно зависит от вашего приложения и того, что вы хотите сделать с изображением, преобразование в оттенки серого — это всего лишь один подход.
Чтобы преобразовать в оттенки серого
grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Некоторые основные операции показаны в документации
Ответ 8
вы читаете изображение в шкале серого
img = cv2.imread(‘D:\Project\Capture1.jpg’, 0)
здесь вы получите только intencity
Ответ 9
Этот код даст вам значения пикселей в массиве ‘k’, пройдя цикл.
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
Ответ 10
import cv2 import numpy as np imagename = "capure.jpg" img = cv2.imread(imagename, 0) # 0 params, for gray image height, width = img.shape[:2] # image height and width print(img) # all image pixels value in array print(img[10, 10]) # one pixel value in 10,10 coordinate for y in range(height): for x in range(width): print(img[x], img[y], end = "\t")
How to access and modify pixel value in an image using OpenCV Python?
We will use this image as the Input File in the following example.
Example
In this Python program, we access the pixel value at a point in the input image. We also find the pixel value for three different color channels and modify the pixel value at that point for the red color channel.
# program to access and modify a pixel value # import required libraries import cv2 # read the input image img = cv2.imread('horizon.jpg') # access pixel values using indexing print("pixel value at [200,150]:", img[200,150]) print("pixel value blue channel at [200,150]:", img[200,150][0]) print("pixel value green channel at [200,150]:", img[200,150][1]) print("pixel value red channel at[200,150]:", img[200,150][2]) # modify the pixel value at [200,150] for red color channel img[200,150] = (0, 0, 255) print("after modifying pixel value at [200,150]:", img[200,150])
Output
When you run the above program, it will produce the following output −
pixel value at [200,150]: [115 192 254] pixel value blue channel at [200,150]: 115 pixel value green channel at [200,150]: 192 pixel value red channel at [200,150]: 254 after modifying pixel value at [200,150]: [ 0 0 255]
Example
In this Python program, we access the pixel values of a region in the input image. We also modify these pixel values to red color.
# program to access and modify the pixel values of a region # import required libraries import cv2 # read the input image img = cv2.imread('horizon.jpg') # access pixel values using indexing and slicing # modify pixel color of a region to red color img[100:300,150:350] = (0, 0, 255) # display the modified image cv2.imshow('Modified Image', img) cv2.waitKey(0) cv2.destroyAllWindows()
Output
When you run the above program, it will produce the following output −
Notice the output image after modifying the pixel values to red color.