资源简介
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.em
文件 472 2015-01-13 20:41 bbb\bbb\Debug\bbb.exe.em
文件 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\li
文件 2 2015-01-13 20:41 bbb\bbb\Debug\li
文件 2 2015-01-13 20:41 bbb\bbb\Debug\li
文件 2 2015-01-13 20:41 bbb\bbb\Debug\li
文件 2 2015-01-13 20:41 bbb\bbb\Debug\li
文件 2 2015-01-13 20:41 bbb\bbb\Debug\li
文件 2270 2015-01-13 20:41 bbb\bbb\Debug\li
文件 5064 2015-01-13 20:41 bbb\bbb\Debug\li
文件 610 2015-01-13 20:41 bbb\bbb\Debug\li
文件 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个文件信息
- 上一篇:Scala实用指南高清带书签
- 下一篇:三星4521hs固件需要Bios机刷写
相关资源
- opengl轮廓字体源代码
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- 两个重叠双子的远场极限轮廓函数
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- 简化三心圆拱巷道施工开挖轮廓线的
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 基于CNN的静态手势识别系统
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- 中国及各省地图轮廓数据
- 自己玩的动态手势识别系统
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
评论
共有 条评论