Считывание значений BGR пикселя в OpenCV

#python-3.x #opencv #image-processing #numpy-ndarray #color-detection

Вопрос:

введите описание изображения здесь, я хочу определить цвет формы на изображении,поэтому, когда я запускаю код «bgr_list = img[cX, cY]», я получаю эту ошибку:

 bgr_list = img[cX,cY]                 
IndexError: index 648 is out of bounds for axis 0 with size 598
        
        
but when I run "bgr_list = img[300,300]" I do not get any error  
->where [300,300] is white portion in image  
-> where, cX = x-coordinate of centroid and cY = y-coordinate of centroid  
-> BGR_list is bgr value of pixel at centroid  
-> the size of image is 898x598 pixel
 

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

1. просто предположение: попробуйте изменить строку индексирования на bgr_list = img[cY,cX]

2. Спасибо @DominikFicek, это сработало, можете ли вы также объяснить логику изменения координат?

Ответ №1:

Похоже, вы получаете декартовы координаты X и Y из какой-то предварительной обработки, но numpy матрицы, которые использует opencv, используют матричную индексацию (row, column, channel) . Ваша координата X соответствует индексу столбца, а координата Y-это ваш индекс строки.

Пролистывание индексов должно выполнить свою работу bgr_list = img[cY,cX]