资源简介
对米粒图像处理的基础实验源代码+实验报告,包括米粒图像的读取,变换灰度图,Suan边缘检测,根据直方图进行阈值分割;根据分割结果,求米粒位置,重心,长度,面积等信息。
建议配置运行环境:OPENCV2.4.10+VS2010(其他版本也可以,需要自己调整)
代码片段和文件信息
#include
#include
using namespace cv;
using namespace std;
#include //ofstream类的头文件
#define BYTE unsigned char
//函数声明
void ReadImageRgbImageToGrayImage(Mat &inputImg Mat &grayImg);
void VisitContinueImgByPointer(Mat &inputImg Mat &dstImg);
Mat SusanFun(Mat img);
void DrowCenter(Mat inputImage);
//读取图像并变成灰度图
void ReadImageRgbImageToGrayImage(Mat &inputImg Mat &grayImg)
{
inputImg = cvLoadImage(“米粒4.png“);
if (inputImg.empty())//读取失败时
{
cout << “Could not open or find the image“ << std::endl;
}
//namedWindow(“原图“ WINDOW_AUTOSIZE);
//resize(inputImg inputImg Size()0.250.25);//长宽都变为原来的0.5倍
imshow(“原图“ inputImg);
cvtColor(inputImg grayImg CV_RGB2GRAY);//把图片转化为灰度图
}
//访问像素
void VisitContinueImgByPointer(Mat &inputImg Mat &dstImg)
{
dstImg = inputImg.clone();
int rows = dstImg.rows;
int cols = dstImg.cols;
int channels = dstImg.channels();
if(dstImg.isContinuous())
{
cols *= rows;
rows = 1;
//cout << “is continuous “ << endl;
}
for(int i = 0; i < rows; i++)
{
uchar* data = dstImg.ptr(i);
for(int j = 0; j < cols * channels; j++)
{
//ofstream mycout(“Q1.txt“);
//mycout< data[j] = 0; //处理每一个像素
//add code
}
}
//若存储连续,等效于以下代码
//uchar* data = dstImg.data;
//for(int i = 0; i < cols * rows * channels; i++)
// data[i] = 155; //处理每一个像素
}
//susan算子
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;//数量 自适应阈值???? (不是全局阈值)
thresh=10;
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;
}
//图像的形态学处理:膨胀与腐蚀(主要是为了解决susan算子边缘检测结果出现断裂的问题)
Mat DilateAndErode(Mat &inputImg)
{
Mat out;
//获取自定义核
Mat element = getStructuringElement(MORPH_RECT Size(3 3)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-11 09:09 OPENCVTEST\
目录 0 2018-12-26 20:51 OPENCVTEST\Debug\
文件 127488 2018-12-26 20:51 OPENCVTEST\Debug\OPENCVTEST.exe
文件 725764 2018-12-26 20:51 OPENCVTEST\Debug\OPENCVTEST.ilk
文件 1641472 2018-12-26 20:51 OPENCVTEST\Debug\OPENCVTEST.pdb
目录 0 2019-01-11 08:52 OPENCVTEST\ipch\
目录 0 2019-01-11 08:52 OPENCVTEST\ipch\opencvtest-e1fb7881\
文件 57868288 2019-01-11 08:52 OPENCVTEST\ipch\opencvtest-e1fb7881\opencvtest-296a8017.ipch
目录 0 2018-12-19 11:23 OPENCVTEST\OPENCVTEST\
文件 29720 2018-12-12 21:32 OPENCVTEST\OPENCVTEST\Center.tif
目录 0 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\
文件 548 2018-12-26 11:03 OPENCVTEST\OPENCVTEST\Debug\cl.command.1.tlog
文件 10654 2018-12-26 11:03 OPENCVTEST\OPENCVTEST\Debug\CL.read.1.tlog
文件 318 2018-12-26 11:03 OPENCVTEST\OPENCVTEST\Debug\CL.write.1.tlog
文件 3468 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\li
文件 5638 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\li
文件 570 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\li
文件 502608 2018-12-26 11:03 OPENCVTEST\OPENCVTEST\Debug\main.obj
文件 672 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\mt.command.1.tlog
文件 946 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\mt.read.1.tlog
文件 376 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\mt.write.1.tlog
文件 1020 2018-12-19 11:25 OPENCVTEST\OPENCVTEST\Debug\OPENCVTEST.Build.CppClean.log
文件 381 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\OPENCVTEST.exe.intermediate.manifest
文件 54 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\OPENCVTEST.lastbuildstate
文件 2983 2018-12-26 20:51 OPENCVTEST\OPENCVTEST\Debug\OPENCVTEST.log
文件 713 2018-12-19 11:55 OPENCVTEST\OPENCVTEST\Debug\OPENCVTEST.vcxprojResolveAssemblyReference.cache
文件 0 2018-12-19 11:25 OPENCVTEST\OPENCVTEST\Debug\OPENCVTEST.write.1.tlog
文件 478208 2018-12-26 11:03 OPENCVTEST\OPENCVTEST\Debug\vc100.idb
文件 1036288 2018-12-26 11:03 OPENCVTEST\OPENCVTEST\Debug\vc100.pdb
文件 12194 2018-12-26 11:03 OPENCVTEST\OPENCVTEST\main.cpp
文件 8949 2018-12-19 20:09 OPENCVTEST\OPENCVTEST\OPENCVTEST.vcxproj
............此处省略63个文件信息
相关资源
- 用VISIO画的机房机柜内设备分布图-可
- OpenGL Development Cookbook PDF + vs2015源碼
- opencv3人脸识别正/负样本
- ACE编程超全面
- gh0st3.6 win7x64 vs2013可编译运行
- VTK使用手册VTKUsersGuide
- 学习opencv3273835
- CVS中文完美稳定版(服务器和客户端
- Learning OpenCV 3
- 6轴机械手正解,反解算法;vs2017工程
- msys7zawgetsvngitmercurialcvs-rev12.7z
- 基于opencv的人脸识别
- LearningOpenCV3ComputervisioninC.pdf
- WinCC OA官方中文视频教程第三天
- 人脸识别.rar
- OpenCV 3和Qt5计算机视觉应用开发英文版
- 海康工业相机二次开发源码 + OpenCV3
- 人脸自动分割.
- Opencv3.4SUFR纵向图像平滑拼接
- VS+CSocket实现网络聊天,可发文件Wor
- VMware Remote Console 10.0.3 for WindowsVMware
- 基于Winpcap实现抓取数据包
- vs系列番茄助手兼容最新vs2019
- OpenCV Linux依赖库ippicv_linux_20151201.tgz
- vscode精简版
- 使用OpenCV 手势识别
- galil gclib的
- 南京公交线路查询
- win32平台的opencv3.3.0
- 图像细化算法
评论
共有 条评论