资源简介
用计算机视觉的方法处理米粒图像。功能包括:中值滤波、直方图显示、大津法和经验阈值法的阈值分割、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方案
相关资源
- 跟踪特征点并画AR物体
- 基于马尔科夫随机场的SAR图像处理
- 别踩白块 毕业论文
- 支持OpenCV3.2的opencv_ffmpeg.7z
- openCVSharp Unity3d
- 彩色图像的SVM分割,Opencv实现
- ECCV10-Guided Image Filter-代码
- ECCV10-Guided Image Filter -ppt
- 医学图像处理概述
- 数字图像处理余松煜2007年.pdf
- OpenCV2.31库
- 稀疏和冗余-在信号和图像处理方面从
- Delphi的OpenCV头文件和
- OpenCV 3 Blueprints.pdf[382页可复制]
- 基于opencv接口的深度学习人脸检测代
- 基于opencv的b样条实现
- 北京大学的OPENCV课程PPT_田永鸿
- YML保存 cvCompareHist cvCalcEMD2 直方图对比
- 稀疏表示在图像处理中的应用
- 二型模糊彩色图像的边缘检测方法研
- vgg_generated_48(6480120).i
- 数字图像处理 冈萨雷斯 第三版 课后
- 基于OpenCV的图像二值化阈值可调
- 直方图均衡图像增强的硬件在Quartus
- 《Photoshop图像处理技术》教案
- BJUT数字图像处理作业
- 小波变换及其应用信号处理 小波变换
- 基于UDP协议的视频传输
-
convert_cascade 转换xm
l文件 含dll文件 - 基于OPENCV的多种特征提取总结
评论
共有 条评论