遇到了一个不错的《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