标签:目标检测
遇到了一个不错的《OpenCV入门教程》http://www.opencv.org.cn/forum.php?mod=viewthread&tid=33549
包含矩阵类的操作,以及其内存管理的介绍
以及读写图像和视频的操作。
一个例子
#include<iostream> #include"opencv2/opencv.hpp" using namespace std; using namespace cv; int main(){ CascadeClassifier classifier;//分类器 classifier.load("E:\\training\\RESULT\\cascade.xml");//加载分类器 Mat img = imread("E:\\training\\RESULT\\1.jpg",0);//待检测的图像,0表示转换为灰度图 vector<Rect> faces;//保存识别到的目标的矩形 //最后两个参数是扫描窗口的最小大小和最大大小 classifier.detectMultiScale(img, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(20, 20)); if (faces.empty()){ imshow("test", img); waitKey(0); return 0; } else{ //标出识别到的物体 //计算圆心 Point center(faces[0].x + faces[0].width / 2, faces[0].y + faces[0].height / 2); //画出椭圆 ellipse(img, center, Size(faces[0].width, faces[0].height), 10, 0, 360, Scalar(255, 0, 0), 1, 1); //显示图片 imshow("test", img); waitKey(0); return 0; } }
detectMultiScale这个方法好慢,,,扫描一遍我用50X50的仅仅扫描1遍都得1s时间,根本达不到应用的要求,应该考虑问题的实际情况,自己重写这个检测的方法,比如更准确的限制扫描窗口的大小,缩小扫描的范围,做并行扫描等等优化措施。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:目标检测
原文地址:http://blog.csdn.net/giantpoplar/article/details/47030847