【发布时间】:2026-01-25 12:20:04
【问题描述】:
我正在使用HoughLines检测帧中的线条,线条信息保存在cv::vector<cv::Vec2f>中,我将其作为二维数组处理,我对第二个感兴趣,它的角度线,我只想保留角度差大于1.5 rad 的线,因为我在这里做了什么:
.............................
cv::vector<cv::Vec2f> lineQ;
..............................
// ordring the vector based on the angle value in rad
for ( int i = 0 ; i< lineQ.size()-1; i++){
for(int j= i+1;j<lineQ.size();j++){
if(lineQ[i][1] > lineQ[j][1]){
tmp = lineQ[i];
lineQ[i] = lineQ[j];
lineQ[j] = tmp;
}
}
}
现在我想根据角度比较向量元素之间的关系
cv::vector<cv::Vec2f> line;
for ( int i = 0 ; i< lineQ.size()-1; i++){
for ( int j= i+1; j<lineQ.size(); j++){
if(fabs(lineQ[i][1] - lineQ[j][1])>1.5){
line.push_back(lineQ[i]);
}
}
}
这适用于 2 条线,但是当我得到 3 条时,假设 1.3rad 作为 line 大小的角度
大于 2。我虽然使用 erase 但这改变了我的向量的大小!
【问题讨论】:
-
看看这是否有帮助*.com/a/16476207/2648826
-
擦除的问题是我只想根据第二个维度进行比较!
-
@TomekSzpakowicz 不,不是!
-
不清楚你想做什么。你能举个例子输入和预期的输出数据吗?
标签: c++ arrays algorithm vector