OpenCV学习12

来源:互联网 发布:cf手游版刷枪软件下载 编辑:程序博客网 时间:2024/06/08 15:38

检测运动物体

////  main.cpp//  Study12////  Created by Sean on 16/2/27.//  Copyright © 2016年 Sean. All rights reserved.//#include <iostream>#include "highgui.h"using namespace std;int main(int argc, const char * argv[]) {    // insert code here...    cout << "Project Start..."<<endl;    CvCapture* capture= cvCreateCameraCapture(0);    IplImage* img = cvQueryFrame(capture);    IplImage* b_img = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);    IplImage* c_img = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);    cvCvtColor(img,b_img,CV_BGR2GRAY);    cvNamedWindow("Example12");    while(1)    {        if(cvWaitKey(33)==27)            break;        img = cvQueryFrame(capture);        cvCvtColor(img, c_img, CV_BGR2GRAY);        cvCmp(b_img, c_img, c_img, CV_CMP_LT);        double pre =1-cvAvg(c_img).val[0]/255;        cout<<100*pre<<"%"<<endl;        cvShowImage("Example12", c_img);    }    cvReleaseCapture(&capture);    cvDestroyAllWindows();    return 0;}


首先从摄像头读取一帧数据,用于对后面的画面进行对比,对比出来的结果成为一张二值图像(仅image data发生改变,及0&255,而不是0&1),对白值进行统计,算出相似概率,也可设置概率阈值来判断动作。需要注意的是cvCmp只适用于灰度图像,使用前务必将彩色图像变为灰度图像,当然,也可以分离RGB三通道,分别进行检测,就能实现颜色、动作检测,但具体的误差方程我没想出来,不知道怎么处理这RGB三层的阈值。



0 0
原创粉丝点击