「機能しない」とは何を意味するのかよくわかりません。しかし、goodFeaturesToTrack_Demo.cppを調べて、その使用方法が問題を解決するかどうかを確認してください。コードと
更新:
/**
* @function goodFeaturesToTrack_Demo.cpp
* @brief Demo code for detecting corners using Shi-Tomasi method
* @author OpenCV team
*/
#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);
const char* source_window = "Image";
/// Function header
void goodFeaturesToTrack_Demo(int, void*);
/**
* @function main
*/
int main(int, char** argv)
{
/// Load source image and convert it to gray
src = imread(argv[1], 1);
cvtColor(src, src_gray, COLOR_BGR2GRAY);
/// Create Window
namedWindow(source_window, 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(size_t 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, WINDOW_AUTOSIZE);
imshow(source_window, copy);
}
参照によって「コーナー」を渡していますか?それが値であれば、それはループに入ることさえありません。 'corners.size()'の値をデバッグしてみてください。 – Mahesh
問題は、idxでcv :: Pointを取得しています...私はループに入っていますが、右隅の点にアクセスできません。私は事務所にいるときより詳細な情報を入力します – dom