基于OPencv的文理检测和直方图实现指针定位

使用的测试环境:win+vc2022+MFC+Opencv

未进行函数优化和整理仅供学习参考,以下是实现的主要代码,测试工程获取:链接:https://pan.baidu.com/s/1ilVhMapQI1ZBNPPNgJdN9w?pwd=a8a1 提取码:a8a1 

搭建opencv环境

 

 代码实现

#图像滤波
GaussianBlur(Mat_edges, Mat_edges, Size(9, 9), 3, 3);
#canny
cvCanny(Cany_Image, Cany_Image, 100, 255, 3);//输入图像,输出图像(输出的边缘图像 ,也是单通道的,但是是黑白的),下限值,上限值,
#图像膨胀
cvDilate(Cany_Image, Cany_Image, myModel, 2);//第一个image1位输入图像,第二个位输出图像,myModel为腐蚀结构元素,1最后一位为收缩次数
#直方图统计
float maxx = 0;
memset(hitData, 0x00, sizeof(int) * MaxNum);
for (int i = 0; i < Cany_Image->width; i++)
{
    for (int j = 0; j < 400; j++)//Cany_Image->height
    {
        if (Cany_Image->imageData[i + j * Cany_Image->width] == 0)continue;
        float tempr = sqrtf((i - certerx) * (i - certerx) + (j - certery) * (j - certery));
        if (tempr > certerR)continue;
        float q = AngleScal * (atan2((j - certery), (i - certerx))*180/3.1415926+180);
        maxx = max(maxx, q);
        if (((int)(q+0.5)) >= MaxNum)q = q - 1;
        hitData[(int)(q+0.5)]++;
    }
}

#描绘指针
line(Mat_Image, Point(certerx, certery), tmpPoint, Scalar(0, 0, 255), 2);

 测试界面

运行效果

 测试结果视频

基于OPencv的文理检测和直方图实现指针定位

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言: 开源的opencv真是一件伟大的产品,那么多个函数跟变量(具体多少还没数过)。要是结合起来综合运用几乎可以胜任任何有关图像识别和处理方面的工作。如果能更深入一点根据具体需要修改或优化里面的源码那更是如虎添翼。 花了点时间浏览了www.opencv.org.cn论坛里的所有贴子,还好不多才200多页。总体上对opencv里的一些常用函数功能作用大致有点了解,筛选一些跟元件识别有关的运用内容,但它论坛里的贴子回复的内容点到即止的居多。从网上下载了能搜到的教程跟代码全学习了解测试了一下,图像处理流程通常先开始都是要进行滤波,除燥,灰度,二值化后再轮廓识别等。 开始动手 经过多次好多次运行测试组合,终于有一次显示出意外的惊人效果,而且相当简单只是调用了几个函数而以,就可以有这样效果实在出人意料。第一个是进行元件中心点获取,也是直接调用函数再加点东西就可以得出元件的四个矩形顶点坐标,有这几个坐标就可以直接算出元件中间点所在的坐标了。如果要检测元件摆放角度是否是垂直90度,只要判断边宽的长度为最小或最大时就是垂直90度。 但这个矩形框无法测出元件具体角度。如截图: 测试视频地址:https://v.youku.com/v_show/id_XMjU5NzY5NTI0.html 不过,还有另外一个函数可以提供这个功能,调用后可以直接求出最小外接矩形和角度 如截图: 测试视频地址:https://v.youku.com/v_show/id_XMjYwMDMzMDc2.html 说明:里面的光源不行,临时用手电筒,和在光盘上插几个LED做环形灯做照明,无法做到无阴影显示。如果光源做的好,效果应该是非常精确稳定。 识别包含下面2种做法: opencv里需要的头文件跟库文件都已编译好放在和设置在当前程序目录下,就可不用安装opencv 也能直接编译。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值