[已答复] 求图片中直线斜率

[复制链接]
eureka小七 发表于 2021-5-19 10:27:09
请问同一张图片中三根直线各自的斜率怎么求?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

2 条回复


gywxd 发表于 2021-5-19 11:36:26
这个图要做到精确很难,主要是线宽太大,而且粗细不一,
简单的做法二值化 然后用 线段识别函数 进行线段拾取,得线段起始点计算斜率就很快

lyqmath 发表于 2021-5-28 15:49:55
可以

参考书籍《计算机视觉与深度学习实战——以MATLAB、Python 为工具》[刘衍琦等]

使用一个比较简单的方法,如下


  1. clear all; clc; close all;
  2. Xo=imread('ceshi.bmp');
  3. X=im2bw(Xo);
  4. X=imclose(X,strel('disk',3));
  5. X1 = bwareafilt(X,1);
  6. X2 = X;
  7. X2(X1) = 0;
  8. X2 = bwareafilt(X2,1);
  9. X3 = X;
  10. X3(X1) = 0;
  11. X3(X2) = 0;
  12. sz = size(X);
  13. t = linspace(1, sz(2), 1e3);
  14. [r1,c1] = find(X1);
  15. p1 = polyfit(c1,r1,1);
  16. s1 = polyval(p1, t);
  17. [r2,c2] = find(X2);
  18. p2 = polyfit(c2,r2,1);
  19. s2 = polyval(p2, t);
  20. [r3,c3] = find(X3);
  21. p3 = polyfit(c3,r3,1);
  22. s3 = polyval(p3, t);
  23. t1 = t; t2 = t; t3 = t;
  24. t1(t1>max(c1) | t1<min(c1)) = NaN;
  25. t2(t2>max(c2) | t2<min(c2)) = NaN;
  26. t3(t3>max(c3) | t3<min(c3)) = NaN;
  27. figure; imshow(Xo);
  28. hold on;
  29. plot(t1,s1,'r-','LineWidth',4);
  30. plot(t2,s2,'g-','LineWidth',4);
  31. plot(t3,s3,'b-','LineWidth',4);
  32. legend({sprintf('斜率=%.2f',p1(1)), sprintf('斜率=%.2f',p2(1)), sprintf('斜率=%.2f',p3(1))});
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表