1. 如何替换opencv人脸检测算法
我用摄像头打开480x640的窗口,然后使用OpenCV的人脸检测函数cvHaarDetectObjects进行人脸检测。函数配置如下:
faces = cvHaarDetectObjects( detectImg, (CvHaarClassifierCascade*)cascade, storage, search_scale_factor, 3, flags, minFeatureSize );
其中, search_scale_factor是1.1, flags = CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCH; 也就是说只找一张人脸。 minFeatureSize是(20,20)。
这样的配置在有人脸的情况下可以实时检测,大概就是十几ms的样子
2. 求基于OpenCV的三帧差分算法代码
Detector虚类):实现前景检测,
2.团块检测模块(CvBlobDetector虚类):实现运动物体(团块)的的检测
3.团块跟踪模块(CvBlobTracker虚类):实现运动物体跟踪
4.团块运动轨迹产生模块(CvBlobTrackGen虚类):实现的功能与模块名字同(下同)
5.团块轨迹后处理模块(CvBlobTrackPostProc虚类)
6.团块轨迹分析模块(CvBlobTrackAnalysis虚类)
7.以及处理流程模块(cvBlobTrackerAuto虚类):此模块可看成胶水,集成上面的模块。
除了处理流程模块(因为它只控制流程呀~),每一个模块可以用多种算法实现,在程序中,这些算法就是函数。如(15-16行):
CvFGDetector* cvCreateFGDetector0()
CvFGDetector* cvCreateFGDetector0Simple()
CvFGDetector* cvCreateFGDetector1()
也就是说这三个函数都是能完成前景检测,具体用哪个,由你在main()函数中调用。
其他模块也是这样。
实现这些模块的类以及完成这些算法的函数都由OPENCV帮你实现了,blobtrack要做的就是在main()函数中调用这些函数,初始化函数参数以及各种变量。
3. opencv 中自带的模板匹配算法出处
方法如下:
使用OPENCV下SIFT库做图像匹配的例程
// opencv_empty_proj.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>
#include<opencv2/nonfree/nonfree.hpp>
#include<opencv2/legacy/legacy.hpp>
#include<vector>
using namespace std;
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
const char* imagename = "img.jpg";
//从文件中读入图像
Mat img = imread(imagename);
Mat img2=imread("img2.jpg");
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
if(img2.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image before", img);
imshow("image2 before",img2);
//sift特征检测
SiftFeatureDetector siftdtc;
vector<KeyPoint>kp1,kp2;
siftdtc.detect(img,kp1);
Mat outimg1;
drawKeypoints(img,kp1,outimg1);
imshow("image1 keypoints",outimg1);
KeyPoint kp;
vector<KeyPoint>::iterator itvc;
for(itvc=kp1.begin();itvc!=kp1.end();itvc++)
{
cout<<"angle:"<<itvc->angle<<"\t"<<itvc->class_id<<"\t"<<itvc->octave<<"\t"<<itvc->pt<<"\t"<<itvc->response<<endl;
}
siftdtc.detect(img2,kp2);
Mat outimg2;
drawKeypoints(img2,kp2,outimg2);
imshow("image2 keypoints",outimg2);
SiftDescriptorExtractor extractor;
Mat descriptor1,descriptor2;
BruteForceMatcher<L2<float>> matcher;
vector<DMatch> matches;
Mat img_matches;
extractor.compute(img,kp1,descriptor1);
extractor.compute(img2,kp2,descriptor2);
imshow("desc",descriptor1);
cout<<endl<<descriptor1<<endl;
matcher.match(descriptor1,descriptor2,matches);
drawMatches(img,kp1,img2,kp2,matches,img_matches);
imshow("matches",img_matches);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}
4. 如何在opencv中使用层次聚类算法
如何在opencv中使用层次聚类算法
Invalidate只是放一个WM_PAINT消息在队列里,不做别的,所以只有当当前函数返回后,进入消息循环,取出WM_PAINT,才执行PAINT,所以不管Invalidate放哪里,都是最后的。
InvalidateRect(hWnd,&rect,TRUE);向hWnd窗体发出WM_PAINT的消息,强制客户区域重绘制,
rect是你指定要刷新的区域,此区域外的客户区域不被重绘,这样防止客户区域的一个局部的改动,而导致整个客户区域重绘而导致闪烁,如果最后的参数为TRUE,则还向窗体发送WM_ERASEBKGND消息,使背景重绘,当然在客户区域重绘之前。
5. opencv 有isodata 算法 吗
你好
参考资料
http://wenku..com/link?url=36q-_2P_T9I9j-8_--GJAxJuyqR8CcRAc1mSDsS5J3LyRC2_
6. 如何使用EMCV将opencv算法移植到DSP
EMCV全称为Embedded Computer Vision Library,是一个可在TI DM64x系列DSP上运行的计算机视觉库。EMCV提供了跟OpenCV完全一致的函数接口,通过EMCV,你可以轻松的将你的OpenCV算法移植到 DSP,甚至不用改一行代码。 目前EMCV已经支持IplImage, CvMat,CvSeq等基本数据结构,可使用cvCreateImage等创建和释放图像,以及contour检测等。 参考
7. opencv算法怎么实现八邻域的标记
用cvRectangle()函数。
OpenCV里面的绘图函数函数功能: 通过对角线上的两个顶点绘制简单、指定粗细或者带填充的矩形函数原型:void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,int thickness=1, int line_type=8, int shift=0 );参数介绍:img -- 图像.pt1 -- 矩形的一个顶点。pt2 -- 矩形对角线上的另一个顶点color -- 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。thickness -- 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。line_type -- 线条的类型。见cvLine的描述shift -- 坐标点的小数点位数。
8. opencv关于像素点的图像匹配算法
首先,建议你将图像中感兴趣区域(比如上图中的字母)取出来进行归一化,然后在进行匹配率计算。这是因为周围环境会对匹配率产生影响。
其次,建议你将匹配率算法改成Hausdorff距离https://en.wikipedia.org/wiki/Hausdorff,这样对图像有些平移什么的都不怎么敏感了。
9. opencv中ransac算法需要什么库
对阈值的选择: 当两幅图像的SIFT特征向量生成后,下一步我们采用关键点特征向量的欧式距离来作为 两幅图像中关键点的相似性判定度量。取图像1中的某个关键点,并找出其与图像2中欧式距离最近的前两个关键点,在这两个关键点中,如果最近的距离
10. 3.opencv下的kmean算法,函数为cv2.kmeans 函数的格式是什么分别有什么含义
因为K-mean的初始化是需要随机的,要随机的确定K个点作为初始点。