【视觉项目】【day2】8.21号实验记录(手机固定高度15cm拍摄+直方图均衡化+模板匹配,模板12个,测试28个,效果十分差)

由于模板匹配是像素之间的比对,所以不同光照下的像素灰度值也会不同
所以在比对之前,我们需要对测试图和模板图进行直方图均衡化,这一步可以先实现。
今天将采用批量处理的方式,来检测模板匹配的准确度。

这里发现,最好还是先对所有测试图均衡化再截取模板。
因为测试图和模板图分开来均衡化是不合理的。
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】加载模板图像********************************************************//
	//创建模板vector
	vector<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】加载测试图像********************************************************//
	//创建测试vector
	vector<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模板匹配。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾牙慧者

欢迎请作者喝奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值