资源简介
SVM应用实例:药品(胶囊)识别与分类 SVM应用实例:药品(胶囊)识别与分类 SVM应用实例:药品(胶囊)识别与分类 SVM应用实例:药品(胶囊)识别与分类

代码片段和文件信息
/*
SVM应用实例:药品(胶囊)识别与分类
*/
#include
#include
#include
using namespace cv;
using namespace ml;
void findSamplecontours(InputArray src OutputArrayOfArrays contours);
//使用SVM进行胶囊分类
int main()
{
//样本总类别数
const int classSum = 6;
//每个样本选取的特征个数
const int featureSum = 3;
//训练样本总数
const int sampleSum = 57;
//每种类别对应的名称
const std::string labelName[6] = {“green_peru“ “brown“ “darkcyan“ “black“ “white_brown“ “saddlebrown“};
//训练数据及标签
Mat trainDataMat = Mat::zeros(sampleSum featureSum CV_32FC1);
Mat labelsMat = Mat::zeros(sampleSum 1 CV_32SC1);
int k = 0;
////========================创建训练数据==================================////
for (int label = 0; label < classSum; label++)
{
//训练图像所在文件夹
std::string path = “E:/image/image/classification/capsule/pills_class_“;
char temp[256];
sprintf_s(temp “%d“ label);
path = path + temp + “.png“;
Mat src = imread(path);
if (src.empty())
{
std::cout<<“can not load image. \n“< return -1;
}
//imshow(“input“ src);
//获取每个胶囊的轮廓
std::vector>contours;
findSamplecontours(src contours);
for(int i = 0; i < contours.size(); i++)
{
if(contourArea(contours[i]) > 50)
{
//建立掩模MASK
Mat mask = Mat::zeros(src.size() src.type());
drawContours(mask contours i Scalar(255 255 255) -1);
//获得MASK对应区域的图像
src.copyTo(maskmask);
//求各个通道的均值
Scalar maskSum = sum(mask);
maskSum = maskSum/contourArea(contours[i]);
//取前三个通道即BGR通道的均值作为特征
for (int j = 0; j < featureSum; j++)
{
trainDataMat.at(kj) = maskSum[j];
}
labelsMat.at(k0) = label;
k++;
}
}
}
std::cout<<“trainDataMat: \n“< std::cout<<“labelsMat: \n“<
////========================使用SVM训练部分==================================////
Ptr model = SVM::create();
model->setType(SVM::C_SVC);
model->setKernel(SVM::POLY);
model->setDegree(1.0);
model->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER1001e-6));
model->train(trainDataMatROW_SAMPLElabelsMat);
////========================测试部分==================================////
Mat testImg = imread(“E:/image/image/classification/capsule/pills_test.png“);
if (testImg.empty())
{
std::cout<<“can not load image. \n“< return -1;
}
std::vector>testContours;
findSamplecontours(testImg testContours);
//对测试图像中的样本进行逐个判断
for(int i = 0; i < testContours.size(); i++)
{
if(contourArea(testContours[i]) > 50)
{
Mat testDataMat = Mat::zeros(1 featureSum CV_32FC1);
Mat testLabelsMat;
Mat testMask = Mat::zeros(testImg.size() testImg.type());
drawContours(testMask testContours i Scalar(255 255 255) -1);
testImg.copyTo(testMasktestMask);
//求各个通道的均值
Scalar testMaskSum = sum(test
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5020 2018-02-07 11:24 main.cpp
文件 268301 2013-02-15 19:08 capsule\pills_class_0.png
文件 264150 2013-02-15 19:08 capsule\pills_class_1.png
文件 265601 2013-02-15 19:08 capsule\pills_class_2.png
文件 276180 2013-02-15 19:08 capsule\pills_class_3.png
文件 278478 2013-02-15 19:08 capsule\pills_class_4.png
文件 261237 2013-02-15 19:08 capsule\pills_class_5.png
文件 352396 2018-02-05 20:49 capsule\pills_test.png
目录 0 2018-02-06 15:55 capsule
----------- --------- ---------- ----- ----
1971363 9
- 上一篇:HappyEO电子琴 破解版绿色版
- 下一篇:LPC1768技术手册
相关资源
- 基于蚁群算法优化SVM的瓦斯涌出量预
- 基于模糊聚类和SVM的瓦斯涌出量预测
- 基于CAN总线与ZigBee的瓦斯实时监测及
- SVM-Light资料,使用说明
- 果蝇算法融合SVM的开采沉陷预测模型
- BoW|Pyramid BoW+SVM进行图像分类
- 基于libsvm的图像分割代码
- 基于SVM及两类运动想象的多通道特征
- 小波包和SVM在轴承故障识别中的应用
- 林智仁教授最新版本LibSVM工具箱
- 台湾林教授的支持向量机libsvm
- 新闻分类语料
- libsvm-3.20
- 7种支持向量机SVM工具包
- A Practical Guide to Support Vector Classifica
- libSVM的代码详细解析,注释非常详细
- 台湾林志恒的LIBSVM的中文简体说明文
- SVM算法-回归拟合程序.zip
- 基于Grid-Search_PSO优化SVM回归预测矿井
- 新冒落带高度算法FOA-SVM预计模型
- 官方最新版本libsvm-3.23
- 基于PCA和SVM的个性化睡眠分期研究
- 基于svm四种工具箱
- 自然语言处理之文本主题判别
- HOG+SVM实现数字识别
- opencv自带SVM分类器使用程序
- 基于HOG特征提取的svm行人头肩训练
- 遗传算法优化支持向量机算法
- 经典的行人检测算法,利用HOG和SVM实
- 基于GA参数优化的在线学习SVM算法及其
评论
共有 条评论