- Сначала я бы использовал
cv::cornerHarris()
для обнаружения углов (что я мог бы сделать легко). - Во-вторых, я хочу извлечь ключевые точки из детектора Харриса и сохранить их в
std::vector<KeyPoint>
(что я понятия не имею, как это сделать). Я буду использовать это позже, чтобы вычислить дескрипторы и сопоставить их. Я мог бы сделать их с помощью SURF довольно легко, но я хочу сделать это с угловым детектором Харриса.
/// Detecting corners cv::cornerHarris(leftRoi, dst, blockSize, apertureSize, k, BORDER_DEFAULT); /// Normalizing normalize(dst, dst_norm, 0, 255, NORM_MINMAX, CV_32FC1, Mat()); convertScaleAbs(dst_norm, dst_norm_scaled); /// Drawing a circle around corners for (int j = 0; j < dst_norm.rows; j++) { for (int i = 0; i < dst_norm.cols; i++) { if ((int)dst_norm.at<float>(j, i) > 165) { circle(dst_norm_scaled, Point(i, j), 5, Scalar(0), 2, 8, 0); } } } /// Showing the result namedWindow("corners_window", CV_WINDOW_AUTOSIZE); imshow("corners_window", dst_norm_scaled);
- Возникла проблема с этой частью (Как извлечь ключевые точки из вышеприведенного детектора Харриса)
std::vector<KeyPoint> keypoints;