0
存在しない点の座標ベクトルを並べる必要がありますが、その座標を行列で指定して得られた値にする必要があります。例mergesortベクトルc + opencv
vector <Point> // v has two coordinates within
Mat D (2,2) ;
int a = v [ 0 ] .x ;
int b = v [ 0 ] .y ;
int c = v [ 1 ] .x ;
int d = v [ 1 ] .y ;
if (D.at <int> (a, b) < D.at<int> (c, d))
// Sort in ascending order
のために私は「座標値」を検索するために、適切な変更をマージソートを使用しようとしました:
void work::merge(vector<cv::Point>& Q1, int low, int high, int mid, Mat & Densita)
{
cout << "merge" << endl;
int i, j, k;
vector<cv::Point> c;
i = low;
k = low;
j = mid + 1;
while (i <= mid && j <= high)
{
cout << "-" << endl;
int X = Q1[i].x;
int Y = Q1[i].y;
int W = Q1[j].x;
int Q = Q1[j].y;
int a = Densita.at<int>(X, Y);
int b = Densita.at<int>(W,Q);
if (a < b)
{
cout << "min" << endl;
c.push_back(cv::Point(X, Y));
k++;
i++;
}
else
{
cout << "max" << endl;
c.push_back(cv::Point(W, Q));
k++;
j++;
}
}
while (i <= mid)
{
cout << "D" << endl;
int X = Q1[i].x;
int Y = Q1[i].y;
c.push_back(cv::Point(X, Y));
k++;
i++;
}
while (j <= high)
{
cout << "§" << endl;
int W = Q1[j].x;
int Q = Q1[j].y;
c.push_back(cv::Point(W, Q));
k++;
j++;
}
for (k = low; k < high; k++)
{
cout << "***" << endl;
Q1.at(k) = c.at(k);
}
}
void work::mergesort(vector<cv::Point>& Q1, int low, int high, Mat & Densita)
{
cout << "RichiamoMergesort" << endl;
int mid;
if (low < high)
{
mid = (low + high)/2;
mergesort(Q1, low, mid, Densita);
mergesort(Q1, mid + 1, high, Densita);
merge(Q1, low, high, mid, Densita);
}
}
をしかし、マージを入力した後、彼は少し動作し、その後、私は、このエラーを返しました
invalid vector<T> subscript ------>with vs2015
なぜですか?私は何を間違えているのですか?の解き方 ?
ありがとうございます。このコードは私の仕事にとっては良いことです。 – kiaka