目录
- 均衡化代码
- 模板图片按照大小排序
- 总代码
- 测试效果
- 新思路
由于模板匹配是像素之间的比对,所以不同光照下的像素灰度值也会不同
所以在比对之前,我们需要对测试图和模板图进行直方图均衡化,这一步可以先实现。
今天将采用批量处理的方式,来检测模板匹配的准确度。
这里发现,最好还是先对所有测试图均衡化再截取模板。
因为测试图和模板图分开来均衡化是不合理的。
equalizeHist( src, dst );
该函数只支持单通道的均衡化,对于彩色图像来说可以先将多通道分离成单通道,再合并成多通道。
均衡化代码
for (int i = 0; i < filenames.size(); i++) {srcImg = cv::imread(filenames[i]);//*************************对图片的处理部分***************************///这里我们对原图进行直方图均衡化vector<Mat> channels;//定义存储的容器split(srcImg,channels);Mat bluechannel = channels[0];//b通道的图像equalizeHist(bluechannel, bluechannel);//均衡化Mat greenchannel = channels[1];//g通道的图像equalizeHist(greenchannel, greenchannel);Mat redchannel = channels[2];//r通道的图像equalizeHist(redchannel, redchannel);merge(channels, dstImg);//合并通道//********************************************************************/savedfilename = dest + filenames[i].substr(len);std::cout << savedfilename << std::endl;cv::imwrite(savedfilename, dstImg);cout << "第" << i << "张完成" << endl;waitKey(30);
}
模板图片按照大小排序
将模板图按照像素大小,从大到小排序。防止出现测试图局部地区误判成像素较少的模板(这是因为发现误判的情况还挺多的)
结果:没有卵用。。。
总代码
#include <opencv2/opencv.hpp>
#include "opencv2/features2d.hpp"
#include <vector>
#include <algorithm>
#include <iostream>
#include "windows.h"
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <fstream>
#define WINDOW_NAME "【程序窗口】"
using namespace cv;
using namespace std;//展示推测结果与实际值
void show_text(int nums, String real_name)
{if (nums == 0){cout << "推测:大棕瓶 "<<" "<< real_name << endl;}else if (nums == 1){cout << "推测:BAL" << " " << real_name << endl;}else if (nums == 2){cout << "推测:方底圆肩 " << " " << real_name << endl;}else if (nums == 3){cout << "推测:长条 " << " " << real_name << endl;}else if (nums == 4){cout << "推测:圆肩" << " " << real_name << endl;}else if(nums == 5){cout << "推测:桶肩" << " " << real_name << endl;}else if (nums == 6){cout << "推测:多面肩" << " " << real_name << endl;}else if (nums == 7){cout << "推测:方方" << " " << real_name << endl;}else if (nums == 8){cout << "推测:小长条" << " " << real_name << endl;}else if (nums == 9){cout << "推测:小桶肩" << " " << real_name << endl;}else if (nums == 10){cout << "推测:小方肩" << " " << real_name << endl;}else if (nums ==11){cout << "推测:葡萄形" << " " << real_name << endl;}else if (nums == 12){cout << "推测:小小长条" << " " << real_name << endl;}else {cout << "推测:无" << " " << real_name << endl;}
}
//展示每个模板与测试图最佳匹配的可能性
void show_probability(int nums, double probability)
{if (nums == 0){cout << "大棕瓶的概率 " << " " << probability << endl;}else if (nums == 1){cout << "BAL的概率" << " " << probability << endl;}else if (nums == 2){cout << "方底圆肩的概率 " << " " << probability << endl;}else if (nums == 3){cout << "长条的概率 " << " " << probability << endl;}else if (nums == 4){cout << "圆肩的概率" << " " << probability << endl;}else if (nums == 5){cout << "桶肩的概率" << " " << probability << endl;}else if (nums == 6){cout << "多面肩的概率" << " " << probability << endl;}else if (nums == 7){cout << "方方的概率" << " " << probability << endl;}else if (nums == 8){cout << "小长条的概率" << " " << probability << endl;}else if (nums == 9){cout << "小桶肩的概率" << " " << probability << endl;}else if (nums == 10){cout << "小方肩的概率" << " " << probability << endl;}else if (nums == 11){cout << "葡萄形的概率" << " " << probability << endl;}else if (nums == 12){cout << "小小长条的概率" << " " << probability << endl;}else{cout << "无的概率" << " " << probability << endl;}
}
//主程序
int main()
{//改变控制台字体颜色system("color 02");//******************************************【0】获取测试文件夹路径和模板文件夹路径********************************************************////获取测试文件夹路径和模板文件夹路径cv::String path_test = "D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图/"; cv::String path_template = "D:/opencv_picture_test/视觉项目resize后的图片夹/模板图片夹/均衡化后的template/"; cout << "获取地址成功" << endl;//******************************************【1】加载模板图像********************************************************////创建模板vectorvector<Mat>tempMat;//插入模板元素Mat srcImage;std::vector<cv::String> temp_filenames;cv::glob(path_template, temp_filenames); //opencv里面用来读取指定路径下文件名的一个很好用的函数for (int i = 0; i < temp_filenames.size(); i++){srcImage = cv::imread(temp_filenames[i]);tempMat.push_back(srcImage);}//获取模板数目int tempMat_Nums = tempMat.size();//******************************************【2】加载测试图像********************************************************////创建测试vectorvector<Mat>testMat;//插入测试元素std::vector<cv::String> test_filenames;cv::glob(path_test, test_filenames); //opencv里面用来读取指定路径下文件名的一个很好用的函数for (int i = 0; i < test_filenames.size(); i++){srcImage = cv::imread(test_filenames[i]);testMat.push_back(srcImage);}//获取测试图数目int testMat_Nums = testMat.size();//******************************************【3】对每张测试图进行模板匹配********************************************************//for (int j = 0;j < testMat_Nums;j++){cout <<"第"<< j <<"张测试图片的测试"<< endl;Mat resultMat;Mat dispMat;int match_method = TM_CCORR_NORMED; //经过试错发现此参数较好。//用每个模板去匹配测试图,并且找出每次结果的最佳匹配值,将值存入vector中vector<double>goodval;vector<Point>goodlock;int matchnum = 0;Point matchLoc;for (int i = 0;i < tempMat_Nums;i++){//采用模板与目标图像像素与各自图像的平均值计算dot product,正值越大匹配度越高,负值越大图像的区别越大,但如果图像没有明显的特征(即图像中的像素值与平均值接近)则返回值越接近0;matchTemplate(testMat[j], tempMat[i], resultMat, match_method);//不归一化,因为不同模板归一化后的最佳值皆为1,无法比较//normalize(resultMat, resultMat, 0, 1, NORM_MINMAX, -1, Mat()); //归一化double minVal; double maxVal; Point minLoc; Point maxLoc; //定义最大值最小值以及它们的位置变量minMaxLoc(resultMat, &minVal, &maxVal, &minLoc, &maxLoc, Mat()); //从结果矩阵中找到匹配度最大以及最小的值并且确定其位置//对于方法SQDIFF和SQDIFF_NORMED两种方法来讲,越小的值就有着更高的匹配结果//而其余的方法则是数值越大匹配效果越好if (match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED){goodlock.push_back(minLoc);goodval.push_back(minVal);}else{goodlock.push_back(maxLoc);goodval.push_back(maxVal);}show_probability(i, maxVal);//cout << i << " " << maxVal << endl;}//找到goodval中最佳的一组if (match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED){auto goodPosition = min_element(goodval.begin(), goodval.end());matchnum = distance(begin(goodval), goodPosition);}else{auto goodPosition = max_element(goodval.begin(), goodval.end());matchnum = distance(begin(goodval), goodPosition);}show_text(matchnum, test_filenames[j]);matchLoc = goodlock[matchnum];testMat[j].copyTo(dispMat);//以最佳匹配点为中心绘制与模板相同大小的框rectangle(dispMat, matchLoc, Point(matchLoc.x + tempMat[matchnum].cols, matchLoc.y + tempMat[matchnum].rows), Scalar::all(0), 2, 8, 0);namedWindow("testMat", WINDOW_NORMAL);//WINDOW_NORMAL允许用户自由伸缩imshow("testMat", dispMat);waitKey(30);}return 0;
}
测试效果
获取地址成功
第0张测试图片的测试
大棕瓶的概率 0.999962
BAL的概率 0.943395
方底圆肩的概率 0.65766
长条的概率 0.963785
圆肩的概率 0.962278
桶肩的概率 0.975272
多面肩的概率 0.960634
方方的概率 0.960171
小长条的概率 0.972566
小桶肩的概率 0.974289
小方肩的概率 0.974025
葡萄形的概率 0.981708
小小长条的概率 0.960757
推测:大棕瓶 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\BAL.jpg
第1张测试图片的测试
大棕瓶的概率 0.973387
BAL的概率 0.952295
方底圆肩的概率 0.617728
长条的概率 0.971874
圆肩的概率 0.978067
桶肩的概率 0.977255
多面肩的概率 0.961869
方方的概率 0.968212
小长条的概率 0.977279
小桶肩的概率 0.98047
小方肩的概率 0.972961
葡萄形的概率 0.983062
小小长条的概率 0.961548
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\BAL2.jpg
第2张测试图片的测试
大棕瓶的概率 0.94555
BAL的概率 0.999969
方底圆肩的概率 0.642374
长条的概率 0.95283
圆肩的概率 0.957193
桶肩的概率 0.959961
多面肩的概率 0.961516
方方的概率 0.947994
小长条的概率 0.968302
小桶肩的概率 0.96168
小方肩的概率 0.959112
葡萄形的概率 0.975743
小小长条的概率 0.946948
推测:BAL D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\长条.jpg
第3张测试图片的测试
大棕瓶的概率 0.949414
BAL的概率 0.969877
方底圆肩的概率 0.673656
长条的概率 0.954585
圆肩的概率 0.960936
桶肩的概率 0.959291
多面肩的概率 0.957988
方方的概率 0.951915
小长条的概率 0.973501
小桶肩的概率 0.960723
小方肩的概率 0.956964
葡萄形的概率 0.978376
小小长条的概率 0.948134
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\长条2.jpg
第4张测试图片的测试
大棕瓶的概率 0.958116
BAL的概率 0.954966
方底圆肩的概率 0.999696
长条的概率 0.96763
圆肩的概率 0.972593
桶肩的概率 0.966389
多面肩的概率 0.956725
方方的概率 0.965674
小长条的概率 0.970264
小桶肩的概率 0.972091
小方肩的概率 0.969356
葡萄形的概率 0.975405
小小长条的概率 0.961994
推测:方底圆肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\大棕瓶.jpg
第5张测试图片的测试
大棕瓶的概率 0.960543
BAL的概率 0.943379
方底圆肩的概率 0.63105
长条的概率 0.999968
圆肩的概率 0.976092
桶肩的概率 0.978699
多面肩的概率 0.962947
方方的概率 0.97815
小长条的概率 0.970794
小桶肩的概率 0.982023
小方肩的概率 0.976902
葡萄形的概率 0.981179
小小长条的概率 0.972171
推测:长条 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\多面肩+厚底.jpg
第6张测试图片的测试
大棕瓶的概率 0.961845
BAL的概率 0.938932
方底圆肩的概率 0.631991
长条的概率 0.98343
圆肩的概率 0.977328
桶肩的概率 0.976888
多面肩的概率 0.964427
方方的概率 0.980922
小长条的概率 0.973677
小桶肩的概率 0.981396
小方肩的概率 0.975346
葡萄形的概率 0.981092
小小长条的概率 0.974295
推测:长条 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\多面肩+厚底2.jpg
第7张测试图片的测试
大棕瓶的概率 0.969404
BAL的概率 0.961238
方底圆肩的概率 0.656272
长条的概率 0.984213
圆肩的概率 0.99995
桶肩的概率 0.979073
多面肩的概率 0.965727
方方的概率 0.981193
小长条的概率 0.980419
小桶肩的概率 0.985429
小方肩的概率 0.979214
葡萄形的概率 0.983438
小小长条的概率 0.971944
推测:圆肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\方底圆肩+料纹.jpg
第8张测试图片的测试
大棕瓶的概率 0.952006
BAL的概率 0.939826
方底圆肩的概率 0.649975
长条的概率 0.958495
圆肩的概率 0.951616
桶肩的概率 0.999959
多面肩的概率 0.958412
方方的概率 0.955174
小长条的概率 0.967092
小桶肩的概率 0.967042
小方肩的概率 0.967212
葡萄形的概率 0.981166
小小长条的概率 0.958081
推测:桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\方方.jpg
第9张测试图片的测试
大棕瓶的概率 0.956575
BAL的概率 0.959194
方底圆肩的概率 0.692909
长条的概率 0.970126
圆肩的概率 0.969639
桶肩的概率 0.969893
多面肩的概率 0.960757
方方的概率 0.966829
小长条的概率 0.969455
小桶肩的概率 0.977891
小方肩的概率 0.970097
葡萄形的概率 0.979115
小小长条的概率 0.960115
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\方肩+脖夹料.jpg
第10张测试图片的测试
大棕瓶的概率 0.95998
BAL的概率 0.942382
方底圆肩的概率 0.690289
长条的概率 0.975686
圆肩的概率 0.967611
桶肩的概率 0.974151
多面肩的概率 0.959056
方方的概率 0.975163
小长条的概率 0.96586
小桶肩的概率 0.979523
小方肩的概率 0.975867
葡萄形的概率 0.979395
小小长条的概率 0.970433
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\方肩+肩薄.jpg
第11张测试图片的测试
大棕瓶的概率 0.960138
BAL的概率 0.943141
方底圆肩的概率 0.669811
长条的概率 0.974814
圆肩的概率 0.971561
桶肩的概率 0.973398
多面肩的概率 0.958736
方方的概率 0.973076
小长条的概率 0.968558
小桶肩的概率 0.97769
小方肩的概率 0.974977
葡萄形的概率 0.977497
小小长条的概率 0.972664
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\方肩+气泡.jpg
第12张测试图片的测试
大棕瓶的概率 0.967062
BAL的概率 0.956114
方底圆肩的概率 0.661852
长条的概率 0.981427
圆肩的概率 0.982139
桶肩的概率 0.977037
多面肩的概率 0.962865
方方的概率 0.977431
小长条的概率 0.975442
小桶肩的概率 0.982172
小方肩的概率 0.979168
葡萄形的概率 0.982967
小小长条的概率 0.973642
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\方肩+炸口.jpg
第13张测试图片的测试
大棕瓶的概率 0.96134
BAL的概率 0.941148
方底圆肩的概率 0.68
长条的概率 0.976162
圆肩的概率 0.969729
桶肩的概率 0.974416
多面肩的概率 0.959259
方方的概率 0.975174
小长条的概率 0.971821
小桶肩的概率 0.981986
小方肩的概率 0.976689
葡萄形的概率 0.97979
小小长条的概率 0.972547
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\方肩+皱纹气泡.jpg
第14张测试图片的测试
大棕瓶的概率 0.917715
BAL的概率 0.917199
方底圆肩的概率 0.640063
长条的概率 0.93437
圆肩的概率 0.932135
桶肩的概率 0.937066
多面肩的概率 0.999966
方方的概率 0.926692
小长条的概率 0.937533
小桶肩的概率 0.948577
小方肩的概率 0.944384
葡萄形的概率 0.965162
小小长条的概率 0.926824
推测:多面肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\葡萄形+炸口.jpg
第15张测试图片的测试
大棕瓶的概率 0.962036
BAL的概率 0.951763
方底圆肩的概率 0.675355
长条的概率 0.981105
圆肩的概率 0.973268
桶肩的概率 0.97733
多面肩的概率 0.962335
方方的概率 0.999961
小长条的概率 0.972872
小桶肩的概率 0.982297
小方肩的概率 0.977359
葡萄形的概率 0.982195
小小长条的概率 0.974128
推测:方方 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\桶肩+厚底.jpg
第16张测试图片的测试
大棕瓶的概率 0.96481
BAL的概率 0.947198
方底圆肩的概率 0.619446
长条的概率 0.98145
圆肩的概率 0.975495
桶肩的概率 0.976903
多面肩的概率 0.962956
方方的概率 0.979712
小长条的概率 0.97258
小桶肩的概率 0.983755
小方肩的概率 0.979232
葡萄形的概率 0.982808
小小长条的概率 0.971943
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\桶肩+厚底2.jpg
第17张测试图片的测试
大棕瓶的概率 0.946633
BAL的概率 0.956102
方底圆肩的概率 0.67591
长条的概率 0.968554
圆肩的概率 0.963828
桶肩的概率 0.970033
多面肩的概率 0.957061
方方的概率 0.965562
小长条的概率 0.966357
小桶肩的概率 0.976913
小方肩的概率 0.973826
葡萄形的概率 0.977784
小小长条的概率 0.962248
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\桶肩+炸肩.jpg
第18张测试图片的测试
大棕瓶的概率 0.957856
BAL的概率 0.954098
方底圆肩的概率 0.633056
长条的概率 0.966456
圆肩的概率 0.974416
桶肩的概率 0.971957
多面肩的概率 0.962382
方方的概率 0.961484
小长条的概率 0.999968
小桶肩的概率 0.970656
小方肩的概率 0.96648
葡萄形的概率 0.98605
小小长条的概率 0.953888
推测:小长条 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小长条.jpg
第19张测试图片的测试
大棕瓶的概率 0.941413
BAL的概率 0.933865
方底圆肩的概率 0.66242
长条的概率 0.952895
圆肩的概率 0.953722
桶肩的概率 0.950594
多面肩的概率 0.94644
方方的概率 0.950529
小长条的概率 0.950805
小桶肩的概率 0.959539
小方肩的概率 0.955079
葡萄形的概率 0.959137
小小长条的概率 0.942895
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小方肩+波纹.jpg
第20张测试图片的测试
大棕瓶的概率 0.947933
BAL的概率 0.958943
方底圆肩的概率 0.694464
长条的概率 0.961204
圆肩的概率 0.968265
桶肩的概率 0.96511
多面肩的概率 0.954596
方方的概率 0.958223
小长条的概率 0.968379
小桶肩的概率 0.973762
小方肩的概率 0.965491
葡萄形的概率 0.975843
小小长条的概率 0.945753
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小方肩+麻点.jpg
第21张测试图片的测试
大棕瓶的概率 0.942297
BAL的概率 0.919454
方底圆肩的概率 0.64704
长条的概率 0.960287
圆肩的概率 0.947416
桶肩的概率 0.963062
多面肩的概率 0.960944
方方的概率 0.951865
小长条的概率 0.950327
小桶肩的概率 0.982785
小方肩的概率 0.974504
葡萄形的概率 0.977247
小小长条的概率 0.953313
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小方肩+气泡+瓶口破裂.jpg
第22张测试图片的测试
大棕瓶的概率 0.951699
BAL的概率 0.933098
方底圆肩的概率 0.643337
长条的概率 0.967801
圆肩的概率 0.963715
桶肩的概率 0.962655
多面肩的概率 0.945825
方方的概率 0.96187
小长条的概率 0.959702
小桶肩的概率 0.973458
小方肩的概率 0.967692
葡萄形的概率 0.9665
小小长条的概率 0.95645
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小方肩.jpg
第23张测试图片的测试
大棕瓶的概率 0.953089
BAL的概率 0.949544
方底圆肩的概率 0.68363
长条的概率 0.968875
圆肩的概率 0.969542
桶肩的概率 0.968538
多面肩的概率 0.962623
方方的概率 0.964773
小长条的概率 0.966892
小桶肩的概率 0.999974
小方肩的概率 0.976818
葡萄形的概率 0.982622
小小长条的概率 0.959715
推测:小桶肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小方肩2.jpg
第24张测试图片的测试
大棕瓶的概率 0.947293
BAL的概率 0.927502
方底圆肩的概率 0.66462
长条的概率 0.962269
圆肩的概率 0.94927
桶肩的概率 0.964459
多面肩的概率 0.964288
方方的概率 0.952055
小长条的概率 0.951706
小桶肩的概率 0.980446
小方肩的概率 0.999955
葡萄形的概率 0.982902
小小长条的概率 0.959555
推测:小方肩 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小桶肩.jpg
第25张测试图片的测试
大棕瓶的概率 0.940802
BAL的概率 0.936727
方底圆肩的概率 0.634877
长条的概率 0.954007
圆肩的概率 0.947447
桶肩的概率 0.959983
多面肩的概率 0.961293
方方的概率 0.943803
小长条的概率 0.958485
小桶肩的概率 0.965919
小方肩的概率 0.963006
葡萄形的概率 0.999962
小小长条的概率 0.946233
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\小小长条.jpg
第26张测试图片的测试
大棕瓶的概率 0.956958
BAL的概率 0.943956
方底圆肩的概率 0.669834
长条的概率 0.972216
圆肩的概率 0.962061
桶肩的概率 0.97626
多面肩的概率 0.965706
方方的概率 0.966615
小长条的概率 0.967341
小桶肩的概率 0.978036
小方肩的概率 0.977363
葡萄形的概率 0.983658
小小长条的概率 0.99997
推测:小小长条 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\圆肩.jpg
第27张测试图片的测试
大棕瓶的概率 0.964145
BAL的概率 0.948216
方底圆肩的概率 0.63238
长条的概率 0.977482
圆肩的概率 0.975546
桶肩的概率 0.976313
多面肩的概率 0.965695
方方的概率 0.974125
小长条的概率 0.972994
小桶肩的概率 0.981001
小方肩的概率 0.980286
葡萄形的概率 0.983809
小小长条的概率 0.981659
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\圆肩2.jpg
第28张测试图片的测试
大棕瓶的概率 0.962539
BAL的概率 0.949511
方底圆肩的概率 0.642578
长条的概率 0.977668
圆肩的概率 0.970616
桶肩的概率 0.97624
多面肩的概率 0.966701
方方的概率 0.975969
小长条的概率 0.971972
小桶肩的概率 0.980677
小方肩的概率 0.978517
葡萄形的概率 0.983187
小小长条的概率 0.979566
推测:葡萄形 D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/均衡化后的测试图\圆肩3.jpg
新思路
老师说可以考虑一下工业摄像头或者使用基于边缘的ncc模板匹配。