Zedboard甲诊opencv图像处理(二)
通过前面的努力已经得到了n个轮廓了,现在要把最终的轮廓确定下来 ,然后进行特征提取。
先深入分析下轮廓和处理轮廓的方法:http://blog.csdn.net/hitwengqi/article/details/6929523
之前其实我尝试了用 cv::grabCut function把前景图像提取出来,但是这个方法需要的人工操作还是有点多,至少我这里没办法用。所以又放弃了。
先来看看cvApproxPoly()函数吧,http://blog.csdn.net/bruce_zeng/article/details/8074253
然后还有曲线拟合的方法:http://hi.baidu.com/bitroc/item/8f7b8d12f69a4f0ae65c3687
总之还是尝试吧,谁让我菜呢!
首先我采用了形态学处理的方法,进行闭操作,先进行膨胀,然后腐蚀,然后closed,对处理后的二值图像进行最大轮廓查找,去掉其他的轮廓。如果光照处理好的情况下,效果还不错:



但是貌似不是很稳定啊,换个指甲效果就没这么好了。还有就是就算我能处理程这样,还有两条手指头的边界很麻烦啊,需要去掉。当然我还要把最差的效果显示一下:

所以我的想法是,一改进采集装置,固定手指位置;二修改程序或者进一步处理.
Mat Widget::FindmaxCounters(Mat image)
{
vector<vector<Point> > contours;
vector<Point> maxContour;
vector<vector<Point> > ::iterator itc;
Mat dst = Mat::zeros(image.rows, image.cols, CV_8U);
findContours( image, contours, CV_RETR_EXTERNAL , CV_CHAIN_APPROX_NONE );
//找到最大的轮廓
size_t maxSize=;
itc = contours.begin();
while(itc!=contours.end())
{
if(itc->size()>maxSize)
{
maxSize=itc->size();
maxContour=*itc;
}
++itc;
}
itc = contours.begin();
while(itc!= contours.end()) { //Eliminate smaller contours
if(itc->size() < maxSize)
itc=contours.erase(itc);
else
++itc;
}
QString str1;QFont ft;
int ilz1 = (int)contours.size();
str1.setNum(ilz1);ft.setPointSize();
ui->label_9->setAlignment(Qt::AlignCenter);//设置字居中显示
ui->label_9->setFont(ft);
//放到QLabel上显示
ui->label_9->setText(str1);
ui->label_9->show();
drawContours(dst, contours, , Scalar(), CV_FILLED);
//CvRect s;
//CvPoint pt;
//vector<vector<Point> > contours;
//Mat dst = Mat::zeros(grayimage.rows, grayimage.cols, CV_8U);
//findContours( grayimage, contours, CV_RETR_EXTERNAL , CV_CHAIN_APPROX_NONE );
//s=cv::boundingRect(contours);
//pt = cvPoint(s.x+s.width/2,s.y+s.height/2);//-------可以用其他方式获得连通域的一个内点作为起始种子点
//cv::floodFill(dst, pt ,cvScalarAll(255));
return dst;
}
Zedboard甲诊opencv图像处理(二)的更多相关文章
- Zedboard甲诊opencv图像处理(四)
接着上一篇博客,继续改进,现在为了是图像处理结果更加稳定,我实在没有办法了,只好先提取手指,再提取指甲. 把手指从背景里面提出来还是挺简单的,可惜的是我研究这么半天还是这结果,好沮丧. 怎么办呢,时间 ...
- Zedboard甲诊opencv图像处理(三)
整个工程进展到这一步也算是不容易吧,但技术含量也不怎么高,中间乱起八糟的错误太烦人了,不管怎么样,现在面临了最大的困难吧,图像处理算法.算法确实不好弄啊,虽然以前整过,但都不是针对图像的. 现在的图像 ...
- OpenCV图像处理篇之边缘检测算子
OpenCV图像处理篇之边缘检测算子 转载: http://xiahouzuoxin.github.io/notes/ 3种边缘检测算子 一阶导数的梯度算子 高斯拉普拉斯算子 Canny算子 Open ...
- 《OpenCV图像处理编程实例》
<OpenCV图像处理编程实例>例程复现 随书代码下载:http://www.broadview.com.cn/28573 总结+遇到的issue解决: 第一章 初识OpenCV 1.VS ...
- zedboard上移植OPENCV库
zedboard上移植OPENCV库 之前做了很多移植OPENCV库的工作,但是需要包含的各种库,需要交叉编译,X264 ,JPGE ,FFMPGE等等 注意:在<嵌入式系统软硬件协同设计实战指 ...
- 开发环境配置--Ubuntu+Qt4+OpenCV(二)
同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...
- 使用OpenCV查找二值图中最大连通区域
http://blog.csdn.net/shaoxiaohu1/article/details/40272875 使用OpenCV查找二值图中最大连通区域 标签: OpenCVfindCoutour ...
- Python+OpenCV图像处理(一)
Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...
- Python+OpenCV图像处理(一)——读取显示一张图片
先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...
随机推荐
- Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收 ...
- linux修改主机名-IP
1.查看当前主机名 hostname 2. ifconfig 显示所有网络接口的信息 ifconfig eth0 显示网卡eth0的信息 3.临时修改主机名 hostname rusky. ...
- Walle 瓦力 web部署系统
Walle 一个web部署系统工具,可能也是个持续发布工具,配置简单.功能完善.界面流畅.开箱即用! 安装步骤: 1. git clone 首先配置成功(去百度找答案) 打开git bash命令窗口执 ...
- Java线程同步与死锁认识
讲下自己的认识,算小小的总结吧! synchroized 具有同步线程的功能,它的处理机制类似于给参数里面的对象赋一个标记值,来表明当前状态,当程序里面某个线程执行synchroized里面的代码段时 ...
- 浅谈css的预编译---less语言
正如各位所知道的一样,css是一门标记性语言,语法相对简单,对使用者的要求也比较低 .不过可乐不知道友友们有没有发现,在使用css的时候需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤 ...
- Jqgrid的用法总结与分页功能的拓展
这是本人写的第一个与技术相关的博客,但是非挑战技术的,而是对工作的总结,另外加一点点拓展. Jqgrid的功能十分强大,强大到可以做到与数据grid相关的任何功能,同时由于在用的过程中总是不能够一气呵 ...
- 转载——SqlServer之like、charindex、patindex
转载自:http://www.2cto.com/database/201305/214967.html SqlServer之like.charindex.patindex 1.环境介绍 测试环境 ...
- flv网页播放器播放失败
在IIS6.0上发布网站时,在路径正确的情况下,网页flv播放器还是无法播放flv视频的解决方法. 1.打开IIS6.0管理器,打开发布的网站,点击打开属性窗口. 2.在HTTP头选项里找到MIME类 ...
- SQlserver表连接
连接是两元运算,可以对两个或多个表进行查询,结果通常是含有参加连接运算的两个表或多个表的指定列的表. 在T-SQL中,连接查询有两类: 第一类:符合SQL标准的连接谓词表示形式: 第二类:T-SQL扩 ...
- MYSQL触发器的NEW和OLD的一个小问题
OLD NEW 对于没有插入的字段,OLD和NEW的值都等于原来的记录