请选择 进入手机版 | 继续访问电脑版
快捷导航
21 194

基于机器视觉的脚码测量

kayla 于 2018-12-19 16:23 发表在 [开源项目] [复制链接]

注册后可查看大图哦

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

x
本帖最后由 kayla 于 2018-12-27 09:52 编辑

项目名:基于机器视觉的脚码测量

项目成员:吴亚婷、沈沛东、汤帅、邢威、李锦涛
项目概述:
先将PC端服务器打开,当客户端连接服务端成功后,表示脚码识别开始。启动脚码识别,放在摄像头20-40cm的透明踏板上静止1s,PC端成功识别脚部特征之后,提取出特征值与数组中码数进行比较,即脚码大小,将其通过WIFI发送给客户端A8。A8接收到消息并解析后,通过语音合成模块,将文本信息转化为语音,在通过外放模块播放出来。播放结束,通过WIFI发送信息给服务端,表示开始下一个脚码测量。
项目需求:
1、 脚码识别:单个脚放在透明踏板上,通过usb摄像头采集脚部图像,与标准尺码进行对比。
2语音播报:在PC端获取对比后得到的尺码,通过语音播报的方式告知被测量者
项目功能:
1、 图像采集:PC服务端利用USB摄像头从底部采集脚掌的图案,将采集的图像存取于MAT中,以待后期数据处理。
2、 数据处理:将获取的图像转化为灰度图像,对图像进行直方化,归一处理,进行膨胀腐蚀等形态学处理,进行颜色通道分割处理,实现肤色检测,利用八近邻种子填充算法和分水岭算法处理,得到具体脚掌图像。
3、 特征值提取:确定掌中心位置。通过ROI裁剪出手势区域,对此区域进行距离变换求重心,得掌心位置。通过找寻到的轮廓,得边界。边界与掌心位置,得距离的峰值,注意延续性,得模糊尖,对模糊尖进行位置检测,排除凸起影响。
4、 数据存储:利用数组存储数据,待PC端数据数据处理完成后提取它的特征值与调取数组中的标准尺码进行对比,并通过WIFI传输给A8客户端。
5、 语音数据处理:通过WIFI获取客服端发来的文本信息,确定符合规定消息进行相应的解析,使其转化为语音消息,利用A8自身自带的语音播放器进行播放。
项目所需材料:
1、USB摄像头一个
2、PC机一台
3、cortex-A8开发板一块
4、透明踏板,支柱

Connecting & Messaging from Any.

共 21 个关于本帖的回复 最后回复于 2019-1-7 22:07

李锦涛 新手上路 发表于 2019-1-7 22:07:13 | 显示全部楼层
代码整合后 客户端和服务端可以连续传输数据
但是测出的码数偏大 需要就规定范围 进行比对
Connecting & Messaging from Any.
举报 使用道具
李锦涛 新手上路 发表于 2019-1-6 22:27:54 | 显示全部楼层
重力感应还是只能使用一次 一次使用完需要再次开启测试
在wifi下 客户端和服务端的传输 目前存在需要手动输入数据的方式完成传输
寻找解决方案 将数据存储进数组中 通过数组传输数据到服务端
Connecting & Messaging from Any.
举报 使用道具
李锦涛 新手上路 发表于 2019-1-5 22:15:41 | 显示全部楼层
PC端只能使用一次重力感应 使用状态机 还是只能使用一次 考虑从中断入手 重新烧录
Connecting & Messaging from Any.
举报 使用道具
李锦涛 新手上路 发表于 2019-1-4 20:41:32 | 显示全部楼层
重力感应 中断部分 串口传输 串口接受数据完成
Connecting & Messaging from Any.
举报 使用道具
kayla 新手上路 发表于 2019-1-4 14:54:01 | 显示全部楼层
今天整理了整个的代码遇到了问题还在想办法调试
Connecting & Messaging from Any.
举报 使用道具
沈沛东 新手上路 发表于 2019-1-3 20:17:12 | 显示全部楼层
安装交叉编译工具链:
Ubuntu  为64位 交叉编译工具为32位
需要安装64位的库
安装交叉编译工具arm-linux-gcc命令未找到的问题:
sudo apt-get install ia32-libs
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1

然后按照 A8手册按照第三章安装交叉工具链步骤即可
Connecting & Messaging from Any.
举报 使用道具
汤帅 新手上路 发表于 2019-1-2 21:43:36 | 显示全部楼层
WiFi相互通信模块大功告成:
通信之间知识点可能有点模糊,导致过程艰辛

本帖子中包含更多资源

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

x
Connecting & Messaging from Any.
举报 使用道具
郎教授 新手上路 发表于 2019-1-2 21:28:45 | 显示全部楼层
先发一张昨天未发的图,今天开始实施硬件组装,进行测试,由于取色出问题,打算用尺寸排除,将多余的小矩形去除

本帖子中包含更多资源

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

x
Connecting & Messaging from Any.
举报 使用道具
郎教授 新手上路 发表于 2019-1-1 22:13:59 | 显示全部楼层
郎教授 发表于 2019-1-1 22:12
尝试直接测出最小外接矩形的长宽,后来发现图像不固定,再加上锐化程度不够,导致结果不准确,后来在可测试 ...

由于图片限制上传数量,明天再上传另外一张结果图
Connecting & Messaging from Any.
举报 使用道具
郎教授 新手上路 发表于 2019-1-1 22:12:22 | 显示全部楼层
尝试直接测出最小外接矩形的长宽,后来发现图像不固定,再加上锐化程度不够,导致结果不准确,后来在可测试范围内建立一个空框作为坐标系,寻找矩形四个顶点进行计算得出长度 ,具体结果如下

本帖子中包含更多资源

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

x

点评

郎教授 由于图片限制上传数量,明天再上传另外一张结果图  详情 回复 发表于 2019-1-1 22:13
Connecting & Messaging from Any.
举报 使用道具
郎教授 新手上路 发表于 2018-12-31 23:15:34 | 显示全部楼层
尝试将3S内的11帧图片进行处理最小外接矩形取样,并进行常数取值,可以实现,最小外接矩形的边界有些较为模糊,判断是取帧时图像非静止导致,所以将模糊边界的作为0处理,暂时可以实现,但是无法进行中断处理,中断事件打算结合红外感应,先用延时函数代替中断。非延时还在尝试
Connecting & Messaging from Any.
举报 使用道具
汤帅 新手上路 发表于 2018-12-31 00:38:41 | 显示全部楼层
写linux服务端和windows客户端,配置6818环境,WiFi测试,但是目前虚拟机ping  windows可以,Windows下ping虚拟机也可以,但是就是客户端连接不上服务端,tcp调试工具调试了 可以,命令行也ping可以,还在解决中。。。。。。。。。
Connecting & Messaging from Any.
举报 使用道具
李锦涛 新手上路 发表于 2018-12-29 11:03:10 | 显示全部楼层
利用红外作为一个开关,然后通过串口传输数据至PC端、
当脚感应红外产生数据,传输给pc 捕获当前的一帧,然后处理这一帧
目前在串口部分存在bug 下午过来继续解决调试
Connecting & Messaging from Any.
举报 使用道具
kayla 新手上路 发表于 2018-12-29 09:43:10 | 显示全部楼层
昨天看了他们发在群里的资料对于如何对于图像取帧。但是遇到了些问题要解决一下。今天继续努力
Connecting & Messaging from Any.
举报 使用道具
郎教授 新手上路 发表于 2018-12-28 21:55:35 | 显示全部楼层
今天一开始在while循环里做图片处理,后来没法进行图片的中断,问题已解决
sprintf(imgName, "%s%s", "D:\VS\TestOpencv_b\TestOpencv_b\photo", ".jpg");
        Mat photo = imread(imgName);
明天开始测量,由于是单目测量,打算先固定玻璃到摄像头的距离,测量一个已知长度参照物,与图片比例做类比放到后台计算
Connecting & Messaging from Any.
举报 使用道具
李锦涛 新手上路 发表于 2018-12-28 21:03:25 | 显示全部楼层
今天整理了一下opencv的整体框架,重新从摄像头入手,把代码有条理性的重新编写了
已经可以提取一帧,并保存一帧,对这一帧进行图像处理 (sprintf())
之前一直尝试隔段时间提取一帧数,但是一直未考虑内存的问题,所以怎么写程序都会出现内存泄露的问题
明日准备利用外部中断去触发,在触发以后保存当前的一帧并处理他。
Connecting & Messaging from Any.
举报 使用道具
郎教授 新手上路 发表于 2018-12-27 22:03:12 | 显示全部楼层
今天把视频的处理大致上做好了,等到亚克力板到了就根据图片对比参照物测量脚的大小,明天把视频的帧提取处理做好,卡壳在提帧后保存了,打算明天不用保存在内存,直接调用
Connecting & Messaging from Any.
举报 使用道具
李锦涛 新手上路 发表于 2018-12-27 22:01:13 | 显示全部楼层
之前完成了环境的各种安装
https://www.cnblogs.com/aiguona/p/9370433.html

随之开始了解了opencv的各种基础知识,但是很零散,不集中,没有条理化
我首先找到了一张脚部图片,进行了灰度,二值,肤色检测,腐蚀,膨胀,使图片中只有脚的前置经,后置为一个背景色,但是还是有斑点出现,准备再次了解填充算法
在和学长交流后,学长建议采用中断去触发开关,获取一帧图片,但是考虑到时间的问题,我觉得采用在固定时间获取一帧去处理这一帧的照片,虽然误差,但是目前先这样处理,后期再进行改进
但是在获取这一帧图片以后,无法调取这一帧图片,然后imshow出来,这个问题我弄了一天多,还是解决不了,准备明天向学长请教一下
看到这篇帖子的帅哥靓女们,如果你们以前了解过opencv 有什么推荐学习的网站嘛,我想再次重新有条理化的学习一遍opencv()。
Connecting & Messaging from Any.
举报 使用道具
沈沛东 新手上路 发表于 2018-12-27 21:46:30 | 显示全部楼层
今天了解了一下espeak:
1)安装
sudo aptitude install espeak libespeak-dev gespeaker -y
2)测试一下
espeak -vzh “你好”
3)开发
3.1 测试代码
~~~~~~~~~~~~~~~~~
#include <espeak/speak_lib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    char word[] = "吃葡萄不吐葡萄皮";
    espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, NULL, 0);
    espeak_SetVoiceByName("zh+f2");
    espeak_Synth(word, strlen(word) + 1, 0, POS_CHARACTER, 0, espeakCHARS_UTF8, NULL, NULL);
    sleep(3);
    espeak_Terminate();
}
~~~~~~~~~~~~~~~~~
3.2 编译
gcc -o app hello.c -lespeak
3.3执行
./app
Connecting & Messaging from Any.
举报 使用道具
kayla 新手上路 发表于 2018-12-27 20:22:19 | 显示全部楼层
今天讨论和看了一些关于opencv知识知道了如何对于图像进行采集以及处理的步骤和方法。前几天订购的物件摄像头已经送来了。明天继续看如何对于图像进行处理。看相关的内容,项目基本已经正式开始了。
Connecting & Messaging from Any.
举报 使用道具
郎教授 新手上路 发表于 2018-12-26 21:00:19 | 显示全部楼层
摄像头检测需要的步骤为:打开摄像头--图像滤波--转为灰度图像--Canny边缘检测--寻找外形轮廓--多边形逼近--过滤面积过小和非凸面的物体--根据特征值判断脚步具体形状--结合相机标定输出像素尺寸--输出测量结果
    1.打开摄像头,定义变量frame逐帧显示
    2.转化灰度图像,提取轮廓,可以用Canny或者soble进行横向纵向与整体提取轮廓
Connecting & Messaging from Any.
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐板块

精彩推荐

热门排行

明星用户

手机版|小黑屋|AnyMSG ( ©AnyMSG 2009 - 2017 · ICP备16009991号 )

GMT+8, 2019-4-19 13:02