利用VS编写的基于Opencv大米计数程序
利用VS2010编写的大米计数程序,用Opencv库中的函数进行图像处理,可避免小颗粒干扰
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 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个文件信息
#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图像计数Debugli
文件 6464 2017-04-13 21:07 Opencv图像计数Opencv图像计数Debugli
文件 522 2017-04-13 21:07 Opencv图像计数Opencv图像计数Debugli
文件 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个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)