资源简介
从静态的视频帧中获取的人物图片先二值化,再利用开操作闭操作以及轮廓填充,获取人物轮廓
代码片段和文件信息
// DetectionPic.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include “cv.h“
#include “highgui.h“
#include “cxcore.h“
#include
#include “video/background_segm.hpp“
#include
using namespace cv;
using namespace std;
int _tmain(int argc _TCHAR* argv[])
{
int frameNum = 0count=0;
Mat frame maskframe2;
CvScalar exter_hole inter_hole;
CvMemStorage *storage = cvCreateMemStorage(0);
CvSeq *contour = 0;
int contours = 0;
IplImage *dst_gray = NULL *dst_filed = NULL *dst_DE = NULL *dst_contour = NULL *img_del = NULL *img = NULL;
Mat element1 = getStructuringElement(MORPH_ELLIPSE Size(2 2) Point(-1 -1));
Mat element2 = getStructuringElement(MORPH_CROSS Size(2 2) Point(-1 -1));
img = cvLoadImage(“E://图库//3.jpg“1);
cvNamedWindow(“Contour_“ 1);
cvShowImage(“Contour_“ img);
cvWaitKey(1);
img_del = cvCreateImage(cvGetSize(img) img->depth 1);
dst_gray = cvCreateImage(cvGetSize(img) img->depth 1);
dst_filed = cvCreateImage(cvGetSize(img) img->depth 1);
dst_contour = cvCreateImage(cvGetSize(img) img->depth 1);
cvCvtColor(img img_del CV_BGR2GRAY);//转为灰度图
//cvCopy(&imgimg_del);
//转为二值图
cvThreshold(img_del dst_gray 100 255 CV_THRESH_BINARY_INV);
cvNamedWindow(“Gray“ 1);
cvShowImage(“Gray“ dst_gray);
waitKey(1);
//膨胀腐蚀
//cv::erode((Mat(dst_gray)) frame element2 cv::Point(-1 -1) 1);//腐蚀
cv::dilate(Mat(dst_gray) frame element1 cv::Point(-1 -1) 3);
cv::erode(frame frame element2 cv::Point(-1 -1) 1);//腐蚀
frame.copyTo(frame2);
dst_DE = &IplImage(frame2);
//空洞填充
dst_filed = cvCloneImage(dst_DE);
//cvfindcontours会改变输入图片
contours = cvFindContours(dst_filed storage &contour sizeof(CvContour) CV_RETR_LIST CV_CHAIN_APPROX_NONE);
for (; contour != 0; contour = contour->h_next)
{
count = contour->total;
if (count < 2)
continue;
else
{
//cv::Size(cv::Size(row col)
- 上一篇:一个判断字符串编码类型的类,支持多种编码
- 下一篇:基于单片机花样流水灯原理图及源码
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 人脸识别(opencv_facedetect_v4l2)
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- 基于opencv的模板匹配代码
- c++ 画图(14Qt-XPS)
评论
共有 条评论