координаты пикселей для изображения: способ доступа к местоположениям на изображении

#python #image-processing #computer-vision

#python #обработка изображений #компьютерное зрение

Вопрос:

Я хотел спросить, в каком диапазоне можно указать координаты пикселей для пикселя изображения?

Допустим, у меня есть изображение определенного размера (100*100) . До сих пор я использовал для доступа к определенному пикселю как int или float значение , например (50,50) or (40,85) .

Недавно я наткнулся на репозиторий github, где местоположение изображения инициализируется как значения между (-1,1) использованием следующего кода:

pixel_location = np.random.uniform(-1, 1, size=(1,2)).astype(np.float32)

Это немного сбивает с толку меня, как мы можем получить доступ к местоположению изображения, используя равномерное распределение от диапазона -1 до 1 ?

Что следует иметь в виду, когда моя программа генерирует местоположения пикселей изображения из диапазона 0 - 100 , который я должен ввести в этот код github, который использует местоположения пикселей от -1 до 1 для размера изображения 100*100

Примечание о проекте: мне нужно обработать определенную часть изображения для задачи классификации с использованием репозитория github, но я думаю, что формат расположения изображения вызовет проблему здесь.

Комментарии:

1. ваш код не имеет никакого смысла. откуда вы это взяли?

2. строка 58: github.com/amasky/ram/blob/master/ram.py

3. похоже на какой-то тип нормализованных координат

4. @ChristophRackwitz Не могли бы вы объяснить, почему это не имеет смысла при инициализации местоположения?

Ответ №1:

здесь, если у вас есть изображение размером 100×100, img[-1][1] будет 1-м пикселем 99-й строки. вы можете получить результат, используя opencv, как показано ниже

 img = cv2.imread("Test.jpg")
print(img[-1][1])
 

вы получите значение пикселя [99,1]

для большей уверенности вы можете использовать

 img = cv2.imread("Test.jpg")
img[-1][1] = (0,0,255)
cv2.imwrite("Test.jpg",img)
 

пиксель [99,1] будет красным в Test.jpg

Комментарии:

1. Мне немного непонятно, когда я использую: np.random.uniform(-1, 1, size=(1,2)).astype(np.float32) , я получаю значения с плавающей запятой от -1 до 1 , например: array([[0.87334806, 0.6837041 ]], dtype=float32) . Я хочу найти сопоставление между этим и моим оригинальным методом фактического определения местоположения, например, напрямую используя пиксельные координаты « (50,50)« . В вашем ответе вы используете int значения.