资源简介

opencv学习(四)学习源代码提供,运行环境为VS2010,opencv版本是2410版本。

资源截图

代码片段和文件信息

// bbb.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include   
using namespace std;  
using namespace cv; 

int _tmain()
{
const std::string sourceReference = “c://avi.avi“;
int delay = 1;

char c;
int frameNum = -1; // frame counter

VideoCapture captRefrnc(sourceReference);

if ( !captRefrnc.isOpened())
{
//  cout  << “Could not open reference “ << sourceReference << endl;
return -1;
}

Size refS = Size( (int) captRefrnc.get(CV_CAP_PROP_frame_WIDTH)
(int) captRefrnc.get(CV_CAP_PROP_frame_HEIGHT) );

bool bHandFlag = false;

const char* WIN_SRC = “Source“;
const char* WIN_RESULT = “Result“;

// Windows
namedWindow(WIN_SRC CV_WINDOW_AUTOSIZE );
namedWindow(WIN_RESULT CV_WINDOW_AUTOSIZE);

Mat frame; // 输入视频帧序列
Mat frameHSV; // hsv空间
Mat mask(frame.rows frame.cols CV_8UC1); // 2值掩膜
Mat dst(frame); // 输出图像

//  Mat frameSplit[4];

vector< vector > contours; // 轮廓
vector< vector > filterContours; // 筛选后的轮廓
vector< Vec4i > hierarchy; // 轮廓的结构信息
vector< Point > hull; // 凸包络的点集

while(true) //Show the image captured in the window and repeat
{
captRefrnc >> frame;

if( frame.empty() )
{
cout << “ < < <  Game over!  > > > “;
break;
}
imshow( WIN_SRC frame);

// Begin

// 中值滤波,去除椒盐噪声
medianBlur(frame frame 5);
//  GaussianBlur( frame frameHSV Size(9 9) 2 2 );
//  imshow(“blur2“ frameHSV);
// pyrMeanShiftFiltering(frame frameHSV 10 10);
//   imshow(WIN_BLUR frameHSV);
// 转换到HSV颜色空间,更容易处理
cvtColor( frame frameHSV CV_BGR2HSV );

//  split(frameHSV frameSplit);
//  imshow(WIN_H frameSplit[0]);
//  imshow(WIN_S frameSplit[1]);
//  imshow(WIN_V frameSplit[2]);

Mat dstTemp1(frame.rows frame.cols CV_8UC1);
Mat dstTemp2(frame.rows frame.cols CV_8UC1);
// 对HSV空间进行量化,得到2值图像,亮的部分为手的形状
inRange(frameHSV Scalar(03030) Scalar(40170256) dstTemp1);
inRange(frameHSV Scalar(1563030) Scalar(180170256) dstTemp2);
bitwise_or(dstTemp1 dstTemp2 mask);
//  inRange(frameHSV Scalar(03030) Scalar(180170256) dst);

// 形态学操作,去除噪声,并使手的边界更加清晰
Mat element = getStructuringElement(MORPH_RECT Size(33));
erode(mask mask element);
morphologyEx(mask mask MORPH_OPEN element);
dilate(mask mask element);
morphologyEx(mask mask MORPH_CLOSE element);

frame.copyTo(dst mask);

contours.clear();
hierarchy.clear();
filterContours.clear();
// 得到手的轮廓
findContours(mask contours hierarchy CV_RETR_EXTERNAL CV_CHAIN_APPROX_SIMPLE);
// 去除伪轮廓
for (size_t i = 0; i < contours.size(); i++)
{
//  approxPolyDP(Mat(contours[i]) Mat(approxContours[i]) arcLength(Mat(contours[i]) true)*0.02 true);
if (fabs(contourArea(Mat(contours[i]))) > 30000) //判断手进入区域的阈值
{
filterContours.push_back(contours[i]);
}
}
// 画轮廓
drawContours(dst filterContours -1 Scalar(00255) 3/* 8 hierar

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3642  2015-01-13 20:41  bbb\bbb\bbb.cpp

     文件       4506  2015-01-13 20:33  bbb\bbb\bbb.vcxproj

     文件       1307  2015-01-13 20:32  bbb\bbb\bbb.vcxproj.filters

     文件        143  2015-01-13 20:32  bbb\bbb\bbb.vcxproj.user

     文件       1904  2015-01-13 20:41  bbb\bbb\Debug\bbb.Build.CppClean.log

     文件        406  2015-01-13 20:41  bbb\bbb\Debug\bbb.exe.embed.manifest

     文件        472  2015-01-13 20:41  bbb\bbb\Debug\bbb.exe.embed.manifest.res

     文件        381  2015-01-13 20:41  bbb\bbb\Debug\bbb.exe.intermediate.manifest

     文件         47  2015-01-13 20:41  bbb\bbb\Debug\bbb.lastbuildstate

     文件       2519  2015-01-13 20:41  bbb\bbb\Debug\bbb.log

     文件     541331  2015-01-13 20:41  bbb\bbb\Debug\bbb.obj

     文件    1179648  2015-01-13 20:41  bbb\bbb\Debug\bbb.pch

     文件        196  2015-01-13 20:41  bbb\bbb\Debug\bbb_manifest.rc

     文件       1298  2015-01-13 20:41  bbb\bbb\Debug\cl.command.1.tlog

     文件      17890  2015-01-13 20:41  bbb\bbb\Debug\CL.read.1.tlog

     文件        548  2015-01-13 20:41  bbb\bbb\Debug\CL.write.1.tlog

     文件          2  2015-01-13 20:41  bbb\bbb\Debug\link-cvtres.read.1.tlog

     文件          2  2015-01-13 20:41  bbb\bbb\Debug\link-cvtres.write.1.tlog

     文件          2  2015-01-13 20:41  bbb\bbb\Debug\link.11580-cvtres.read.1.tlog

     文件          2  2015-01-13 20:41  bbb\bbb\Debug\link.11580-cvtres.write.1.tlog

     文件          2  2015-01-13 20:41  bbb\bbb\Debug\link.11580.read.1.tlog

     文件          2  2015-01-13 20:41  bbb\bbb\Debug\link.11580.write.1.tlog

     文件       2270  2015-01-13 20:41  bbb\bbb\Debug\link.command.1.tlog

     文件       5064  2015-01-13 20:41  bbb\bbb\Debug\link.read.1.tlog

     文件        610  2015-01-13 20:41  bbb\bbb\Debug\link.write.1.tlog

     文件        326  2015-01-13 20:41  bbb\bbb\Debug\mt.command.1.tlog

     文件        338  2015-01-13 20:41  bbb\bbb\Debug\mt.read.1.tlog

     文件        234  2015-01-13 20:41  bbb\bbb\Debug\mt.write.1.tlog

     文件        420  2015-01-13 20:41  bbb\bbb\Debug\rc.command.1.tlog

     文件        310  2015-01-13 20:41  bbb\bbb\Debug\rc.read.1.tlog

............此处省略25个文件信息

评论

共有 条评论