У меня есть несколько кругов, расположенных в image, я могу найти местоположение для каждого круга (диаметр и начало координат или центр), поэтому, прежде всего, как я могу проверить все пиксели внутри этого круга (я думаю о цикле for). во-вторых, как я могу спросить, цвет пикселя почти серый? Сначала я хотел спросить, выше ли значения красного, зеленого и синего 125, но это не сработало. Например: (200 130 170) — это точно не серый цвет!
Как добраться до круга и определить его цвет?
Ответы (1)
Если вы хотите проверить, находится ли точка внутри круга, используйте Пифагор.
Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2))
... чтобы определить, насколько далеко точка (x1,y1) находится от центра (x2,y2) окружности. Если вычисленное значение меньше радиуса круга, точка находится внутри круга. Это можно немного оптимизировать, удалив sqrt и проверив, меньше ли результат, чем квадрат радиуса.
Все почти серое, если RGB почти одинаковы. 64,64,64 = темно-серый, 72,64,64 = темно-серый, слегка красноватый. Вам нужно будет определить, что означает "почти"
person
Caius Jard
schedule
22.12.2018
Я получил ответ на свою 2-ю часть, но не могли бы вы уточнить 1-ю часть, поэтому я бы принял это как ответ. мое изображение содержит около 100 кругов, поэтому допустим, что центральная точка (100 100) и диаметр 50 пикселей, как я могу достичь всех этих точек с помощью цикла for для их сканирования?
- person Ahmad; 22.12.2018
Мне нужно сканировать только то, что я должен делать, а не сканировать каждый пиксель и спрашивать, находится ли он внутри круга. Я мог бы использовать два цикла for, чтобы легко сканировать квадрат, но как использовать его с кругом
- person Ahmad; 22.12.2018
Вы можете сделать это для квадрата, и я посоветовал, как это сделать для круга. Используйте алгоритм круга, чтобы проверить каждую точку квадрата. Это оптимизация по сравнению с тестированием каждого пикселя всего изображения. Вы можете сделать больше оптимизации, не проверяя пиксели внутри ромба, точки которых касаются мест, где соприкасаются круг и квадрат.
- person Caius Jard; 22.12.2018
В качестве дополнительной небольшой оптимизации возведите радиус в квадрат и уберите sqrt.
- person Caius Jard; 22.12.2018
Я понял, спасибо
- person Ahmad; 22.12.2018