利用VS编写的基于Opencv大米计数程序


利用VS2010编写的大米计数程序,用Opencv库中的函数进行图像处理,可避免小颗粒干扰
资源截图
代码片段和文件信息
#include
//opencv highgui 模块头文件
#include
//opencv图像处理头文件
#include
using namespace cv;
//包含cv命名空间

int main()//控制台应用程序的入口函数
{
//载入原图
Mat srcImage=imread(“cell1.jpg“);

if(!srcImage.data)
{
printf(“读取图片错误!
“);
return false;
}
//显示原图
imshow(“[原图]“srcImage);

//转为灰度图
Mat grayImage;
cvtColor(srcImagegrayImageCV_BGR2GRAY);
imshow(“[灰度图]“grayImage);

//阈值分割
int ThresholdValue=50;//注意:分割阈值需自己调整
Mat threshImage;
threshold(grayImagethreshImageThresholdValue2550);
imshow(“【二值化效果图】“threshImage);

//进行闭运算
Mat element= getStructuringElement(MORPH_RECT Size(8 8)); 

//进行形态学操作
morphologyEx(threshImagethreshImage MORPH_CLOSEelement);
imshow(“【形态学效果图】“threshImage);
//查找轮廓

//定义轮廓和层次结构
vector> contours;
vector hierarchy;
//查找轮廓
findContours(threshImagecontourshierarchyCV_RETR_LIST CV_CHAIN_APPROX_SIMPLE);
int number=0index =0;
int num1=contours.size();
Mat dstImage= Mat::zeros( threshImage.size() CV_8UC3 );
for(; index >= 0; index = hierarchy[index][0] )//hierarchy[index][0]表示第
        //index个轮廓的后一个轮廓的索引编号
{
int num1=contours[index].size();//将第index个轮廓的像素值赋值给num1

if((num1<150)&&(num1>20))//给一个阈值,用于去掉小斑点的干扰和细胞叠加的干扰
{
Scalar color = Scalar( rand()&255 rand()&255 rand()&255 );
//此句代码的OpenCV2版为:
drawContours( dstImage contoursindex  color CV_FILLED 8 hierarchy  0 Point());
//此句代码的OpenCV3版为:
//drawContours( dstImage contours index color FILLED 8 hierarchy );
number++;
}
else if((num1>150)&&(num1<250))//给一个阈值区分出两个细胞叠加
{
Scalar color = Scalar( rand()&255 rand()&255 rand()&255 );
//此句代码的OpenCV2版为:
drawContours( dstImage contoursindex  color CV_FILLED 8 hierarchy  0 Point());
//此句代码的OpenCV3版为:
//drawContours( dstImage contours index color FILLED 8 hierarchy );
number=number+2;
}
}
imshow(“【轮廓效果图】“dstImage);
std::cout<<“Number is:“< std::cout<<“Number is:“< //std::cout<<“Number is:“< //erode(threshImagethreshImageelement );
//morphologyEx(threshImagethreshImage MORPH_OPEN element);
//显示效果图  
//显示效果

waitKey(0);

return 0;

}
//---------使用说明-------
//注意1:将需要计数的图片放到count.cpp文件同一个文件夹下,并把文件main函数第一行的图片名“cell1.jpg”换成所需要的图片名。
//注意2:二值化分割阈值 ThresholdValue需要自己根据尝试慢慢调整
//注意3:画出轮廓时的干扰阈值也需要自己调整

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-04-13 21:06  Opencv图像计数
     目录           0  2017-04-13 21:07  Opencv图像计数Debug
     文件       70656  2017-04-13 21:07  Opencv图像计数DebugOpencv图像计数.exe
     文件      590980  2017-04-13 21:07  Opencv图像计数DebugOpencv图像计数.ilk
     文件      969728  2017-04-13 21:07  Opencv图像计数DebugOpencv图像计数.pdb
     目录           0  2017-04-13 21:06  Opencv图像计数Opencv图像计数
     目录           0  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debug
     文件        7828  2017-04-13 21:07  Opencv图像计数Opencv图像计数DebugCL.read.1.tlog
     文件         292  2017-04-13 21:07  Opencv图像计数Opencv图像计数DebugCL.write.1.tlog
     文件         381  2017-04-13 21:07  Opencv图像计数Opencv图像计数DebugOpencv图像计数.exe.intermediate.manifest
     文件          63  2017-04-13 21:07  Opencv图像计数Opencv图像计数DebugOpencv图像计数.lastbuildstate
     文件        2873  2017-04-13 21:07  Opencv图像计数Opencv图像计数DebugOpencv图像计数.log
     文件         713  2017-04-13 21:07  Opencv图像计数Opencv图像计数DebugOpencv图像计数.vcxprojResolveAssemblyReference.cache
     文件           0  2017-04-13 21:07  Opencv图像计数Opencv图像计数DebugOpencv图像计数.write.1.tlog
     文件         560  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debugcl.command.1.tlog
     文件      213014  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debugcount.obj
     文件        2762  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debuglink.command.1.tlog
     文件        6464  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debuglink.read.1.tlog
     文件         522  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debuglink.write.1.tlog
     文件         432  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debugmt.command.1.tlog
     文件         704  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debugmt.read.1.tlog
     文件         246  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debugmt.write.1.tlog
     文件      330752  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debugvc100.idb
     文件      528384  2017-04-13 21:07  Opencv图像计数Opencv图像计数Debugvc100.pdb
     文件        3229  2017-04-13 21:07  Opencv图像计数Opencv图像计数Opencv图像计数.vcxproj
     文件         943  2017-04-13 21:07  Opencv图像计数Opencv图像计数Opencv图像计数.vcxproj.filters
     文件         143  2017-04-13 21:06  Opencv图像计数Opencv图像计数Opencv图像计数.vcxproj.user
     文件       46898  2017-04-09 21:22  Opencv图像计数Opencv图像计数cell1.jpg
     文件        2811  2017-04-13 21:07  Opencv图像计数Opencv图像计数count.cpp
     文件    11554816  2017-04-13 21:08  Opencv图像计数Opencv图像计数.sdf
     文件         921  2017-04-13 21:06  Opencv图像计数Opencv图像计数.sln
............此处省略4个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)