猫咪瞎跳_iOS 2016-06-21 20:01 采纳率: 0%
浏览 9602

Opencv HoughLinesP 如何找到我想要的线条

我用Canny边缘检测之后用的HoughLinesP,得到了很多线条,
如图:图片说明

我想要得到笔记本四条边上的线条,请问大神们这该怎么计算?

我现在的算法是这样的:
vector lines;
HoughLinesP(canny, lines, 1, CV_PI / 180, thresholdd, 30, 10);

//通过比较直线上两个点得到水平和竖直两种线条。
    //x1 - x2 的绝对值 > y1 - y2 判断为水平线条,反之为垂直线条
    //然后把水平和垂直线条分别放到一个数组里面,水平线条取y轴最大最小那条线
    垂直线条取x轴最大最小那条线。
    //这种算法导致计算不精确。 大神们帮帮我。谢谢了

// vector horizontals, verticals;
for (int i = 0; i < 20; i++) {
Vec4i v = lines[i];
double delta_x = v[0] - v[2], delta_y = v[1] - v[3];
Line l(cv::Point(v[0], v[1]), cv::Point(v[2], v[3]));
line(LinesMat, l._p1, l._p2, Scalar(255, 0, 0), 1 , CV_AA);
if (fabs(delta_x) > fabs(delta_y)) {
horizontals.push_back(l);
} else {
verticals.push_back(l);
}

  • 写回答

1条回答 默认 最新

  • jian_cheng_90 2016-06-21 22:34
    关注

    首先针对书本颜色做一次过滤,只保留目标颜色区域,再试试霍夫检测,如果效果还不好,可以再做一个轮廓跟踪,contour 的函数,滤除一些噪声区域后,在霍夫检测

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 宝塔面板一键迁移使用不了
  • ¥15 求一个按键录像存储到内存卡的ESP32CAM代码
  • ¥15 如何单独修改下列canvas推箱子代码target参数?,插入图片代替其形状,就是哪个绿色的圆圈每关用插入的图片替代
  • ¥20 四叉树的创建和输出问题
  • ¥15 javaweb连接数据库,jsp文件加载不出来
  • ¥15 matlab关于高斯赛德尔迭代的应用编撰。(相关搜索:matlab代码|迭代法)
  • ¥15 损失匹配问题,求解答
  • ¥15 3500常用汉字书法体检测数据集下载
  • ¥15 odoo17在制造模块或采购模块良品与次品如何分流和在质检模块下如何开发
  • ¥15 Qt音乐播放器的音乐文件相对路径怎么写