最近做了一个钢板焊接点寻找项目,记录一下,哈哈

分为3张图,分成3个博客讲。分别寻找焊接点,因为没有视频,只能从图片中提取。

还有一个问题要求助在第四个博客,我想出一个方法,看看大家有没有什么更好的办法,相互学习。

第一张图,

方法是调滤波迭代值,加houghlinesP(轮廓)。

系统win10,64位,IDE:VS2015。

代码如下:

//调滤波迭代值,加houghlinesP(轮廓)#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;Mat g_srcImage, g_dstImage;//原始图和效果图
int g_nElementShape = MORPH_RECT;//元素结构的形状int g_nMaxIterationNum = 10;
int g_nOpenCloseNum = 0;static void on_OpenClose(int, void*);//回调函数
static void ShowHelpText();int main()
{
system("color 2F");
ShowHelpText();g_srcImage = imread("1.jpg");
if (!g_srcImage.data) { printf("Oh,no,读取srcImage错误~! \n"); return false; }namedWindow("【开运算/闭运算】", 1);g_nOpenCloseNum = 21;//9createTrackbar("迭代值", "【开运算/闭运算】", &g_nOpenCloseNum, g_nMaxIterationNum * 2 + 1, on_OpenClose);//轮询获取按键信息
while (1)
{
int c;on_OpenClose(g_nOpenCloseNum, 0);c = waitKey(0);                          //获取按键if ((char)c == 'q' || (char)c == 27)    //按下键盘按键Q或者ESC,程序退出
break;if ((char)c == 49)                      //键盘按键1的ASII码为49,按下键盘按键1,使用椭圆(Elliptic)结构元素结构元素MORPH_ELLIPSE
g_nElementShape = MORPH_ELLIPSE;else if ((char)c == 50)                 //键盘按键2的ASII码为50,按下键盘按键2,使用矩形(Rectangle)结构元素MORPH_RECT
g_nElementShape = MORPH_RECT;else if ((char)c == 51)                 //键盘按键3的ASII码为51,按下键盘按键3,使用十字形(Cross-shaped)结构元素MORPH_CROSS
g_nElementShape = MORPH_CROSS;else if ((char)c == ' ')
g_nElementShape = (g_nElementShape + 1) % 3;       //按下键盘按键space,在矩形、椭圆、十字形结构元素中循环
}return 0;
}// 【开运算/闭运算】窗口的回调函数static void on_OpenClose(int, void*)
{int offset = g_nOpenCloseNum - g_nMaxIterationNum;               //偏移量
int Absolute_offset = offset > 0 ? offset : -offset;             //偏移量绝对值Mat element = getStructuringElement(g_nElementShape, Size(Absolute_offset * 2 + 1, Absolute_offset * 2 + 1), Point(Absolute_offset, Absolute_offset));      //自定义核if (offset < 0)morphologyEx(g_srcImage, g_dstImage, MORPH_OPEN, element);elsemorphologyEx(g_srcImage, g_dstImage, MORPH_CLOSE, element);imshow("【开运算/闭运算】", g_dstImage);//加houghlinesPMat srcImage = g_dstImage;
Mat midImage, dstImage;                                           //中间变量和目标图Canny(srcImage, midImage, 50, 200, 3);
cvtColor(midImage, dstImage, COLOR_GRAY2BGR);                     //转化为灰度图vector<Vec4i> lines;
HoughLinesP(midImage, lines, 1, CV_PI / 180, 20, 20, 20);         //(输入二值图像,储存线条矢量,距离精度,角度精度,阈值参数(大于阈值才可以被检测返回),最低线段长度(比这个参数短的不能显示),允许同一行点与点连接的最大距离)for (size_t i = 0; i < lines.size(); i++)                          //依次在图中绘制出每条线段
{
Vec4i l = lines[i];//斜率过滤
float k = 1.0*(l[3]-l[1])/(l[2]-l[0]);
int slop = abs(k);
Point a;if (slop <1)                                                       //底线
{}else if(slop >= 1)
{line(dstImage, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(10, 0, 255), 1, LINE_AA);Point a((l[0]+l[2])/2, (l[1] + l[3]) / 2);circle(dstImage, a, 3, Scalar(0, 255, 0),2);cout << "坐标为(" <<(l[0]+l[2])/2 << "," << (l[0] + l[2]) / 2 << ")" << endl;
}}imshow("【效果图】", dstImage);}static void ShowHelpText()
{
printf("\n\n\t\t\t   当前使用的OpenCV版本为:" CV_VERSION);//帮助信息
printf("\n\t按键操作说明: \n\n"
"\t\t键盘按键【ESC】或者【Q】- 退出程序\n"
"\t\t键盘按键【1】- 使用椭圆(Elliptic)结构元素\n"
"\t\t键盘按键【2】- 使用矩形(Rectangle )结构元素\n"
"\t\t键盘按键【3】- 使用十字型(Cross-shaped)结构元素\n"
"\t\t键盘按键【空格SPACE】- 在矩形、椭圆、十字形结构元素中循环\n");
}

结果:

希望大家能给出更好的建议

opencv实战,钢板焊接点寻找1相关推荐

  1. opencv实战,钢板焊接点寻找2

    第二张图 处理代码: //第二张图,调滤波迭代值,加houghlinesP(轮廓)#include <opencv2/opencv.hpp> #include <opencv2/hi ...

  2. 基于OpenCV实战:车牌检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 拥有思维导图或流程将引导我们朝着探索和寻找实现目标的正确道路的方向 ...

  3. [OpenCV实战]49 对极几何与立体视觉初探

    本文主要介绍对极几何(Epipolar Geometry)与立体视觉(Stereo Vision)的相关知识.对极几何简单点来说,其目的就是描述是两幅视图之间的内部对应关系,用来对立体视觉进行建模,实 ...

  4. 再次升级,985博士整理的71个OpenCV实战项目教程开放下载!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

  5. 基于OpenCV实战:3步实现图像降噪

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在本文中,我们将展示如何通过三个简单的步骤来实现降噪.我们将使用机 ...

  6. 基于OpenCV实战:绘制图像轮廓(附代码)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 山区和地形图中海拔高的区域划出的线称为地形轮廓,它们提供了地形的高 ...

  7. 基于OpenCV实战的图像处理:色度分割

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 通过HSV色阶使用彩色图像可以分割来分割图像中的对象,但这并不是分 ...

  8. 基于OpenCV实战:提取中心线

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|AI算法与图像处理 问题 前几天有个人问了我一个问题,问 ...

  9. 基于OpenCV实战:对象跟踪

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 介绍 跟踪对象的基本思想是找到对象的轮廓,基于HSV颜色值. 轮廓 ...

最新文章

  1. mysql 去重_mysql 去重留一
  2. BugkuCTF-社工
  3. axios请求超时,设置重新请求的完美解决方法
  4. python中int是什么的缩写_python中int是什么类型
  5. 用U盘作为启动盘做系统步骤
  6. python打开鼠标指定文件夹_学会python文件操作,鼠标好像没用了,学习python第10天...
  7. MathType 的使用
  8. 一道求因子之和面试算法题
  9. Ubalun电动牙刷拆卸及内部刨析
  10. 英语时态8种基本时态讲解
  11. 质数 素数 合数 闰年 回文
  12. Java项目毕业设计:基于springboot+vue的电影视频网站系统
  13. XP的故障恢复控制台
  14. 怎么样在应用中实现自助报表功能
  15. 马铃薯凝集素(STL,PL)
  16. java-集合框架库-LinkedList
  17. 【屏幕模块 - 笔记】深圳市晶联讯电子 液晶模块 JLX19296G-915-BN
  18. ScePT: 为规划的场景一致和基于策略轨迹预测
  19. 【TFS-CLUB社区 第7期赠书活动】〖从零开始利用Excel与Python进行数据分析 自动化办公实战宝典〗等你来拿,参与评论,即可有机获得
  20. 2022年5月22日【Jiawei_Z】C# 基础教程---刘铁锰 02 委托 事件 继承

热门文章

  1. 批量删除docker容器和镜像
  2. 半导体器件物理【16】非平衡过剩载流子 —— 准费米能级
  3. python判断质数程序_python判断质数
  4. WordPress Avada主题首页加载慢的解决办法
  5. window系统上安装oracle
  6. Unity实现对电脑文件夹和文件的重命名方法
  7. android 仿微信demo————微信消息界面实现(服务端)
  8. 记录D4-23.5.29
  9. codevs 2924 数独挑战(dfs)
  10. python智能识别的门禁系统_用PythonPi实现门禁系统-示例