Как найти крайнюю угловую точку на изображении? - PullRequest
3 голосов
/ 16 октября 2019

source image1 source image2

destination image1 destination image2

Сформируйте исходные изображения выше (исходное изображение1 、 изображение2), я хочу найти крайнюю угловую точку и получить точки, такие как пункт назначения image1 、 изображение2, где я рисую точку красного круга.

На самом деле я исследую Харрис 、 ШиАлгоритм Томаси , но они не такие экстремальные.

На самом деле я попытался goodFeaturesTotrack с использованием кода Java, например:

goodFeaturesToTrack(basedImg,corners,10,0.2,10,maskMat,3,false,0.04);  for (int j=0;j<cornerArray.length;j++){
                Point curP = cornerArray[j];
                Imgproc.circle(retImg,curP,3,new Scalar(255,0,0),-1);
            }

В результате получается следующее изображение:

magnify to find blue corner point

Хотя он может найти некоторую характерную точку синего цвета, но не так сильно, как то, что я показал пункт назначения image1 、 image2.

Так что у вас есть хорошая идея найти угловую точкукакие специальные символы?

1 Ответ

0 голосов
/ 17 октября 2019

Вы можете использовать cv2.goodFeaturesToTrack() для определения угла. Функция принимает четыре параметра

corners = cv2.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance)
  • image - Входное 8-разрядное или 32-разрядное одноканальное изображение в градациях серого с плавающей точкой
  • maxCorners - Максимальное количествовозвращаемые углы
  • qualityLevel - минимально допустимый уровень качества углов в диапазоне 0-1. Все углы ниже уровня качества отклоняются
  • minDistance - минимально возможное евклидово расстояние между углами

enter image description here

import cv2

image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

corners = cv2.goodFeaturesToTrack(gray,10,0.2,20)

for corner in corners:
    x,y = corner.ravel()
    cv2.circle(image,(x,y),5,(36,255,12),-1)

cv2.imshow('image', image)
cv2.waitKey()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...