没有合适的资源?快使用搜索试试~ 我知道了~
视频关键帧提取
4星 · 超过85%的资源 需积分: 50 218 下载量 181 浏览量
2014-11-29
20:48:32
上传
评论 6
收藏 4KB TXT 举报
温馨提示
试读
6页
vs+opencv实现的视频关键帧提取,就是比较相邻帧的直方图差异
资源推荐
资源详情
资源评论
#include <stdio.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <string>
#include <stdlib.h>
#include <iostream>
using namespace std;
int h_bins = 16, s_bins = 8;
int hist_size[] = {h_bins, s_bins};
float total = 0;
float hist1[128];
float hist2[128];
IplImage* CurrentKeyFrame = NULL;
//创建颜色直方图
void LoadHist(IplImage* frame, float collect[])
{
IplImage * src= frame;
IplImage* hsv = cvCreateImage( cvGetSize(src), 8, 3 );
IplImage* h_plane = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* s_plane = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* v_plane = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* planes[] = { h_plane, s_plane };
float h_ranges[] = { 0, 180 };
float s_ranges[] = { 0, 255 };
float* ranges[] = { h_ranges, s_ranges };
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <string>
#include <stdlib.h>
#include <iostream>
using namespace std;
int h_bins = 16, s_bins = 8;
int hist_size[] = {h_bins, s_bins};
float total = 0;
float hist1[128];
float hist2[128];
IplImage* CurrentKeyFrame = NULL;
//创建颜色直方图
void LoadHist(IplImage* frame, float collect[])
{
IplImage * src= frame;
IplImage* hsv = cvCreateImage( cvGetSize(src), 8, 3 );
IplImage* h_plane = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* s_plane = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* v_plane = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* planes[] = { h_plane, s_plane };
float h_ranges[] = { 0, 180 };
float s_ranges[] = { 0, 255 };
float* ranges[] = { h_ranges, s_ranges };
/** 输入图像转换到HSV颜色空间 */
cvCvtColor( src, hsv, CV_BGR2HSV );
cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 );
/** 创建直方图,二维, 每个维度上均分 */
CvHistogram * hist = cvCreateHist( 2, hist_size, CV_HIST_ARRAY, ranges, 1 );
/** 根据H,S两个平面数据统计直方图 */
cvCalcHist( planes, hist, 0, 0 );
int count = 0;
for(int h = 0; h < h_bins; h++)
{
for(int s = 0; s < s_bins; s++)
{
float bin_val = cvQueryHistValue_2D( hist, h, s );
collect[count] = bin_val;
count++;
//cout<<bin_val<<endl;
}
}
}
//比较直方图
void HistCompare(float hista[],float histb[])
{
for(int i = 0; i < h_bins * s_bins; i++)
{
if (hista[i] >= histb[i])
cvCvtColor( src, hsv, CV_BGR2HSV );
cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 );
/** 创建直方图,二维, 每个维度上均分 */
CvHistogram * hist = cvCreateHist( 2, hist_size, CV_HIST_ARRAY, ranges, 1 );
/** 根据H,S两个平面数据统计直方图 */
cvCalcHist( planes, hist, 0, 0 );
int count = 0;
for(int h = 0; h < h_bins; h++)
{
for(int s = 0; s < s_bins; s++)
{
float bin_val = cvQueryHistValue_2D( hist, h, s );
collect[count] = bin_val;
count++;
//cout<<bin_val<<endl;
}
}
}
//比较直方图
void HistCompare(float hista[],float histb[])
{
for(int i = 0; i < h_bins * s_bins; i++)
{
if (hista[i] >= histb[i])
剩余5页未读,继续阅读
Vertoria
- 粉丝: 9
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页