opencv行人检测3(HOG+SVM)

阅读更多
#include
#include
#include
#include

using	namespace std;
using	namespace cv;

int	main(int argc, char **argv)
{
	Mat	img;
	//读取图片
	img = imread("D:\\c.png", 1);
	//HOG特征检测器
	HOGDescriptor	defaultHog;
	//设置SVM分类器
	defaultHog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
	//矩形框数组
	vector found, found_filtered;
	//对图像进行多尺度检测
	defaultHog.detectMultiScale(img, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);
	//detectMultiScale(const Mat& image,CV_OUT vector& objects,double scaleFactor = 1.1,int minNeighbors = 3,int flags = 0,Size minSize = Size(),Size maxSize = Size());
	//待检测图片,被检测物体的矩形框向量组,搜索窗口的比例系数,
	//输出矩形个数
	cout << "矩形个数:" << found.size() << endl;
	// 找出所有没有嵌套的矩形框r,并放入found_filtered中,如果有嵌套的话,则取外面最大的那个矩形框放入found_filtered中
	for (int i = 0; i < found.size(); i++) 
	{
		Rect r = found[i];
		int j = 0;
		for (; j < found.size(); j++)
		
		if (j != i && (r & found[j]) == r)  //按位与操作
		break;
		
		if (j == found.size())
			found_filtered.push_back(r);
		
	}
	cout << "过滤后矩形的个数:" << found_filtered.size() << endl;
	
	//画出矩形框
	for (int i = 0; i 
  

 

        小编又回来了,没办法代码bug太多了。小编用上一篇(行人检测2)的代码,测试了另一张图片,发现行人检测又出现了新的问题。结果如下图所示。


                           opencv行人检测3(HOG+SVM)_第1张图片

        于是,小编又去撩了撩度娘,查看了许多别人的代码,发现detectMultiScale()函数的参数,我没有设置完全,但别人的detectMultiScale()函数的设置都是一致的。所以小编在上一篇的代码中补上了参数,具体如下:

        defaultHog.detectMultiScale(img, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);

        和上一篇的代码相比,小编就改了这一句。改后的完整代码看上面。
        改完后,小编又测试了一下上面的图片,结果如下,准确的检测出了3个人。

 
                        opencv行人检测3(HOG+SVM)_第2张图片
         但是只检测一张图片怎么能够呢?于是小编又检测了第一篇(行人检测1)的图片,结果如下,虽然没有出现第一次的大窗口内有小窗口的问题,但是却还是多出了一个框。


          opencv行人检测3(HOG+SVM)_第3张图片
         这个新出来的问题,真是让小编心力交瘁。又去问了导师,导师说,应该是opencv自带的训练器的结果不准,可以自己训练样本,或者直接加载别人训练好的xml文件。小编的电脑带不起训练,只能希望直接加载别人训练好的xml文件。在网上找了许多代码,大都是训练样本后再加载XML文件的。没有现成的、不需要训练、直接加载别人训练好的XML文件的代码。有样本训练的代码又太过复杂,小编也看不懂。

         小编去研究代码了,下次再说。

 

 

 

 

 

  • opencv行人检测3(HOG+SVM)_第4张图片
  • 大小: 510.2 KB
  • opencv行人检测3(HOG+SVM)_第5张图片
  • 大小: 507.7 KB
  • opencv行人检测3(HOG+SVM)_第6张图片
  • 大小: 492.6 KB
  • 查看图片附件

你可能感兴趣的:(opencv,HOG,SVM,行人检测,C++)