Имя: Пароль:
IT
 
OpenCV FeatureDetector
0 megabax
 
04.01.17
18:03
Добрый день. При попытке скомпилировать вот такой код


// OpenSVDemo.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>



using namespace cv;
using namespace std;

/// Global variables
Mat src, src_gray, src_dst;
int thresh = 100;
int max_thresh = 255;

char* source_window = "Source image";
char* corners_window = "Corners detected";

/// Function header
void cornerHarris_demo(int, void*);

FILE* fp;
int count_of_points=0;


/** function main */
int main(int argc, char** argv)
{
    src = imread("D:\\3\\10300013.png");
    imshow("SDFDS",src);

    //Ptr<Feature2D> surf=Algorithm::create<Feature2D>("");

    Ptr<cv::FeatureDetector> detector = FeatureDetector::create("BRISK");

    /*thresh = atoi(argv[3]);

    
    fp=fopen(argv[1],"w");
    if(fp==NULL)
    {
        printf("Open file error");
        return 1;
    }


    src = imread(argv[2], 1);//bla.png
    src_dst = imread(argv[2], 1);
    cvtColor(src, src_gray, CV_BGR2GRAY);


    cornerHarris_demo(0, 0);
    */
    waitKey(0);
    return(0);
}

на строке

на C++Ptr<cv::FeatureDetector> detector = FeatureDetector::create("BRISK");
Выдает сообщение об ошибке:     3    IntelliSense: class "cv::Feature2D" не содержит члена "create"    d:\учеба\диссертация\программа\особые точки\детектор\specificpoints\specificpoints.cpp    40    55    SpecificPoints
1 Живой Ископаемый
 
04.01.17
18:06
Чувак, но это же не форум по манге!
2 Cool_Profi
 
04.01.17
18:52
(1) Коллега, ты чертовски прав.
Это форум по хентаю...
3 megabax
 
04.01.17
18:59
Попробовал сделать вот так:
    Mat src = imread("D:\\3\\10300013.png");
    Mat dst = imread("D:\\3\\10300013.png");
    std::vector<KeyPoint> points=std::vector<KeyPoint>();
    BRISK detector=BRISK();
    detector.detect(src, points);
    drawKeypoints(src, points, dst);

    imshow("Особые точки",src);

Но теперь на строке
detector.detect(src, points);
почему-то вылетает уже во время выполнения
4 Живой Ископаемый
 
04.01.17
19:04
?Прежде всего, если вы хотите о чем-то спросить, вам нужно сформулировать свой вопрос
5 Cool_Profi
 
04.01.17
19:05
Это уже не просто хентай...
Это уже яой...

А ты не пробовал обращаться н более профильные формумы? На тот же рсдн, например?
6 lock19
 
04.01.17
19:07
(0) Возьми OpenCV той версии для которой у тебя есть примеры.
7 lock19
 
04.01.17
19:09
(3) Ptr<BRISK> detector = BRISK::create();
А так?
8 megabax
 
04.01.17
19:15
(7) Сделал так:
    Mat src = imread("D:\\3\\10300013.png");
    Mat dst = imread("D:\\3\\10300013.png");
    std::vector<KeyPoint> points=std::vector<KeyPoint>();
    //BRISK detector=BRISK();
    Ptr<BRISK> detector = BRISK::create();
    detector->detect(src, points);
    drawKeypoints(src, points, dst);

    imshow("Особые точки",src);
На строке detector->detect(src, points);
вылетает, ругается
"Необработанное исключение в "0x5bb335f2" в "SpecificPoints.exe": 0xC0000005: Нарушение прав доступа при записи "0x003d6000"."
9 lock19
 
04.01.17
19:24
Посмотри пример matchmethod_orb_akaze_brisk.cpp из дистрибутива OpenCV
10 megabax
 
04.01.17
20:36
(9) спасибо
11 lock19
 
04.01.17
20:53
(10) Особо нет за что.
12 megabax
 
05.01.17
13:16
(9) Тот запускал в VS2010, вылетело на строке b->detect(img1, keyImg1, Mat());
Компилировал в VS2015, вроде картинки даже показывает, но потом вылетает и исключение https://yadi.sk/i/eD_GL-P7375hG6 подскажите плз, где еще можно покопаться, в какую сторону посмотреть?
13 lock19
 
05.01.17
20:59
(12) http://answers.opencv.org/question/81817/feature-detector-corrupts-keypoint-vector-in-opencv30-using-msvc-14-_big_allocation_alignment-assertion-message/

Лечится обновлением библиотеки, или резервированием необходимого объёма для векторов.