资源简介
用计算机视觉的方法处理米粒图像。功能包括:中值滤波、直方图显示、大津法和经验阈值法的阈值分割、Susan算子检测边缘、米粒计数、寻找最大米粒。

代码片段和文件信息
#include
#include
#include
#include
#include
#include“opencv2/imgproc/imgproc.hpp“
using namespace std;
using namespace cv;
// 得到图像的直方图
MatND getHistogram(Mat &image)
{
MatND hist;
int channels[] = { 0 };
int dims = 1;
int histSize[] = { 256 };
float granges[] = { 0 255 };
const float *ranges[] = { granges };
calcHist(&image 1 channels Mat() hist dims histSize ranges);
return hist;
}
// 将图像直方图展示出来
Mat getHistogramImage(Mat &image)
{
MatND hist = getHistogram(image);
Mat showImage(256 256 CV_8U Scalar(0));
int i;
double maxValue = 0;
minMaxLoc(hist 0 &maxValue 0 0);
for (i = 0; i < 256; i++)
{
float value = hist.at(i);
int intensity = saturate_cast(256 - 256 * (value / maxValue));
rectangle(showImage Point(i 256 - 1) Point((i + 1) - 1 intensity) Scalar(255));
}
return showImage;
}
Mat SusanFun(Mat img)
{
//susan模板
int OffSetX[37] = { -1 0 1
-2-1 0 1 2
-3-2-1 0 1 2 3
-3-2-1 0 1 2 3
-3-2-1 0 1 2 3
-2-1 0 1 2
-1 0 1 };
int OffSetY[37] = { -3-3-3
-2-2-2-2-2
-1-1-1-1-1-1-1
0 0 0 0 0 0 0
1 1 1 1 1 1 1
2 2 2 2 2
3 3 3 };
int mHeight = img.rows;
int mWidth = img.cols;
unsigned char *ucDataImg = (unsigned char *)img.data;
Mat nImg(img.rows img.cols CV_8UC1);
unsigned char *ucDatanImg = (unsigned char *)nImg.data;
int k pixelSum sameNum;
float thresh;
for (int i = 3; i {
for (int j = 3; j {
pixelSum = 0;
sameNum = 0;
for (k = 0; k<37; k++)
{
pixelSum += ucDataImg[i+ OffSetY[k] * mWidth/50+ (j + OffSetX[k])];
thresh = (float)pixelSum / 37;//数量
if (fabs((float)ucDataImg[(i + OffSetY[k])*mWidth + (j + OffSetX[k])] - ucDataImg[i*mWidth + j]) <= thresh)
{
sameNum++;
}
}
if (sameNum<22)//质量
{
ucDatanImg[i*mWidth + j] = 255;
}
else
{
ucDatanImg[i*mWidth + j] = 0;
}
}
}
return nImg;
}
//利用直方图选择阈值
int SelectThreshold(Mat image) {
int i;
float max = 0 min = 0;
MatND hist;
hist = getHistogram(image);
for (i = 1; i <= 255; i++)
{
if (hist.at(i-1) < hist.at(i)&& hist.at(i)>hist.at(i + 1)&& hist.at(i)>110)
{
break;
}
}
for (i; i <= 255; i++)
{
if (hist.at(i) <100)
break;
}
return i;
}
int main() {
uint i;
CvMemStorage* stor = cvCreateMemStorage(0);
vector > contours;
vector hierarchy;
int thresh1;
double thresh2;
Mat ImgbinImgsubImg1 subImg2ground grayGroundotsuImgmaxrice;
Mat grayImgmedImgsusanImg;
//打开图像
Img = imread(“..\\rice.jpg“1);
ground = imread(“..\\米粒图二值图.jpg“ 1);
imshow(“groundtruth“ground);
//转换为灰度图像
cvtColor(Img grayImg CV_BGR2GRA
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 184 2018-04-08 10:31 exp1\exp1\Debug\exp1.log
文件 2 2018-04-08 10:31 exp1\exp1\Debug\exp1.tlog\CL.command.1.tlog
文件 225 2018-04-08 10:31 exp1\exp1\Debug\exp1.tlog\exp1.lastbuildstate
文件 0 2018-04-08 10:31 exp1\exp1\Debug\exp1.tlog\unsuccessfulbuild
文件 19456 2018-04-08 10:31 exp1\exp1\Debug\vc141.idb
文件 135168 2018-04-08 10:31 exp1\exp1\Debug\vc141.pdb
文件 1308 2018-04-08 10:22 exp1\exp1\exp1.aps
文件 4857 2018-05-04 22:11 exp1\exp1\exp1.cpp
文件 6084 2018-04-08 10:24 exp1\exp1\exp1.vcxproj
文件 1190 2018-04-08 10:24 exp1\exp1\exp1.vcxproj.filters
文件 165 2018-04-08 10:18 exp1\exp1\exp1.vcxproj.user
文件 383 2018-04-08 10:22 exp1\exp1\resource.h
文件 134687 2018-05-08 13:31 exp1\exp1\Susan轮廓图.jpg
文件 997 2018-05-03 17:10 exp1\exp1\x64\Debug\exp1.Build.CppClean.log
文件 255 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.log
文件 546642 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.obj
文件 568 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.tlog\CL.command.1.tlog
文件 24546 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.tlog\CL.read.1.tlog
文件 380 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.tlog\CL.write.1.tlog
文件 223 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.tlog\exp1.lastbuildstate
文件 1088 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.tlog\li
文件 3360 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.tlog\li
文件 366 2018-05-04 22:11 exp1\exp1\x64\Debug\exp1.tlog\li
文件 240640 2018-05-04 22:11 exp1\exp1\x64\Debug\vc141.idb
文件 880640 2018-05-04 22:11 exp1\exp1\x64\Debug\vc141.pdb
文件 181353 2018-05-08 13:31 exp1\exp1\中值滤波后的图.jpg
文件 84018 2018-05-08 13:31 exp1\exp1\大津法与groundtruth做减法.jpg
文件 100958 2018-05-08 13:31 exp1\exp1\大津法二值图.jpg
文件 134571 2018-05-08 13:31 exp1\exp1\最大米粒.jpg
文件 268742 2018-05-08 13:31 exp1\exp1\灰度图.jpg
............此处省略23个文件信息
- 上一篇:STM32F4 EMWIN开发手册_V3.1.pdf
- 下一篇:GL3520方案
相关资源
- 冈萨雷斯 数字图像处理 源代码(m文
- qt图像处理
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- 血液图像处理—细胞识别
- 小波模极大值边缘检测
- VC数字图像处理课程设计
- 图像处理作业C 源代码
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- SAR图像处理1
- Graphics Magic图像处理魔术师,含Delph
- 铝合金方波交流TIG焊熔池图像处理
- 基于图像处理的智能车寻迹算法设计
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 医学超声图像处理研究+哈尔滨工业大
- 用两个摄像头实现,双目标定,双目
- 友锋图像处理系统v3.rar(破解版
- 图像处理代码
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 图片-视频互换程序
- 基于opencv的图像识别识别图像中的色
- 基于图论的图像处理
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
评论
共有 条评论