Перейти к содержимому
Compvision.ru

megabax

Пользователи
  • Количество публикаций

    1
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О megabax

  • Звание
    Новичок
  1. Детекторы особых точек

    Добрый день. Поделитесь, пожалуйста примерами различных детекторов особых точек на OpenCV. Я тут где-то находил вот такой пример Ши Тамаши: // OpenSVDemo.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace cv; using namespace std; /// Global variables Mat src, src_gray; int maxCorners = 23; int maxTrackbar = 100; RNG rng(12345); char* source_window = "Image"; /// Function header void goodFeaturesToTrack_Demo( int, void* ); /** * @function main */ int main( int argc, char** argv ) { /// Load source image and convert it to gray //src = imread( argv[1], 1 ); src = imread("d:\\3\\10300013.png", 1 ); cvtColor( src, src_gray, CV_BGR2GRAY ); /// Create Window namedWindow( source_window, CV_WINDOW_AUTOSIZE ); /// Create Trackbar to set the number of corners createTrackbar( "Max corners:", source_window, &maxCorners, maxTrackbar, goodFeaturesToTrack_Demo ); imshow( source_window, src ); goodFeaturesToTrack_Demo( 0, 0 ); waitKey(0); return(0); } /** * @function goodFeaturesToTrack_Demo.cpp * @brief Apply Shi-Tomasi corner detector */ void goodFeaturesToTrack_Demo( int, void* ) { if( maxCorners < 1 ) { maxCorners = 1; } /// Parameters for Shi-Tomasi algorithm vector<Point2f> corners; double qualityLevel = 0.01; double minDistance = 10; int blockSize = 3; bool useHarrisDetector = false; double k = 0.04; /// Copy the source image Mat copy; copy = src.clone(); /// Apply corner detection goodFeaturesToTrack( src_gray, corners, maxCorners, qualityLevel, minDistance, Mat(), blockSize, useHarrisDetector, k ); /// Draw corners detected cout<<"** Number of corners detected: "<<corners.size()<<endl; int r = 4; for( int i = 0; i < corners.size(); i++ ) { circle( copy, corners[i], r, Scalar(rng.uniform(0,255), rng.uniform(0,255), rng.uniform(0,255)), -1, 8, 0 ); } /// Show what you got namedWindow( source_window, CV_WINDOW_AUTOSIZE ); imshow( source_window, copy ); } но он почему то вылетает на строке cout<<"** Number of corners detected: "<<corners.size()<<endl; с сообщением: " ОС Windows инициировала точку останова в SpecificPoints.exe. Это может быть вызвано повреждением кучи и указывает на ошибку в SpecificPoints.exe или в одной из загруженных им DLL. Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит SpecificPoints.exe Выведенное на экран окно содержит дополнительные данные для диагностики ошибки" Подскажите пожалуйста, как лечить?
×