• 大小: 11.15MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-15
  • 语言: 其他
  • 标签: 计数  

资源简介

利用VS2010编写的大米计数程序,用Opencv库中的函数进行图像处理,可避免小颗粒干扰

资源截图

代码片段和文件信息

#include
//opencv highgui 模块头文件
#include
//opencv图像处理头文件
#include
using namespace cv;
//包含cv命名空间

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

if(!srcImage.data)
{
printf(“读取图片错误!\n“);
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图像计数\Debug\Opencv图像计数.exe
     文件      590980  2017-04-13 21:07  Opencv图像计数\Debug\Opencv图像计数.ilk
     文件      969728  2017-04-13 21:07  Opencv图像计数\Debug\Opencv图像计数.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图像计数\Debug\CL.read.1.tlog
     文件         292  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\CL.write.1.tlog
     文件         381  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\Opencv图像计数.exe.intermediate.manifest
     文件          63  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\Opencv图像计数.lastbuildstate
     文件        2873  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\Opencv图像计数.log
     文件         713  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\Opencv图像计数.vcxprojResolveAssemblyReference.cache
     文件           0  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\Opencv图像计数.write.1.tlog
     文件         560  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\cl.command.1.tlog
     文件      213014  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\count.obj
     文件        2762  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\link.command.1.tlog
     文件        6464  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\link.read.1.tlog
     文件         522  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\link.write.1.tlog
     文件         432  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\mt.command.1.tlog
     文件         704  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\mt.read.1.tlog
     文件         246  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\mt.write.1.tlog
     文件      330752  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\vc100.idb
     文件      528384  2017-04-13 21:07  Opencv图像计数\Opencv图像计数\Debug\vc100.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个文件信息

评论

共有 条评论