基于直方图的匹配_视频流
来源:互联网 发布:python 表格控件 编辑:程序博客网 时间:2024/06/07 14:21
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2\opencv.hpp> #include<opencv2\imgproc\imgproc.hpp> #include <iostream> #include<string> #include <sstream> using namespace cv; using namespace std; MatND getHistogram(Mat &img)//得到直方图 { int channels[]={0,1,2};//考察通道 int HistSize[3]={16,16,16};//直方图中元素数 float r_hranges[] = {0, 255}; float g_hranges[] = {0, 255}; float b_hranges[] = {0, 255}; const float *pRange[]={r_hranges, g_hranges, b_hranges}; //计算直方图,直方图结果放在hist.at<float>(i) MatND hist; calcHist(&img,1,channels,Mat(),hist,3,HistSize,pRange); return hist; } //void getHistogramImage(Mat &image )//画直方图 //{ //MatND hist=getHistogram(image); //double max_val,min_val; //int HistSize[]={256}; //minMaxLoc(hist,&min_val,&max_val,0,0); //Mat histImg(cvSize(256*2,300),CV_8U,Scalar(0)); //for(int i=0;i<HistSize[0];i++) //{ //int val=int(hist.at<float>(i)/max_val*300); //line(histImg,cvPoint(i*2,300),cvPoint(i*2,300-val),cvScalar(255,255,255),1); //} //namedWindow("直方图"); //imshow("直方图",histImg); //} int main() { ///调用摄像头VideoCapture cap(0); if(!cap.isOpened()) { return -1; } Mat src; Mat templ; Mat result;int match_method=CV_TM_SQDIFF;templ=imread("img.jpg",1);//getHistogramImage(templ);//输出模板直方图 MatND sourceHist=getHistogram(templ); double maxDistance; int best_i,best_j;int h_distance=7000;//阈值bool stop = false; ///循环处理图像while(!stop) { maxDistance=0; cap>>src; int T_cols = src.cols - templ.cols ;int T_rows = src.rows - templ.rows;for(int i=0;i<T_cols;i=i+5) {for(int j=0;j<T_rows;j=j+5) { result=src(Rect(i,j,templ.cols,templ.rows)); MatND dstHist=getHistogram(result);//计算各个直方图 double distance=compareHist(sourceHist,dstHist,CV_COMP_INTERSECT);//比较直方图 // cout<<distance<<endl; if(distance>maxDistance) { best_i=i;best_j=j;maxDistance=distance; } } }if(maxDistance>h_distance){Mat best=src(Rect(best_i,best_j,templ.cols,templ.rows)) ;//getHistogramImage(best);//输出最优图片直方图 cout<<maxDistance<<endl;imshow("BestImage",best); /// 最终结果rectangle( src, Point(best_i,best_j), Point( best_i+templ.cols,best_j+templ.rows), Scalar::all(0), 2, 8, 0 );cout<<"目标的中心坐标 ( "<<best_i + templ.cols/2<<" , ("<<best_j+ templ.rows<<" )"<<endl;}else{cout<<"未找到目标"<<endl; }imshow("当前视频",src); //imshow("result",result);if(waitKey(300) >=0) stop = true; } waitKey(); return 0; }
0 0
- 基于直方图的匹配_视频流
- 基于opencv和c++的图像处理:直方图匹配
- 基于opencv和c++的图像处理:直方图匹配
- 基于区间统计的颜色直方图图像匹配算法
- 【图像处理】基于OpenCV底层实现的直方图匹配
- 运动目标检测--基于直方图匹配的鬼影消除
- 运动目标检测--基于直方图匹配的鬼影消除
- 图像的直方图匹配
- opencv基于直方图实现图像检索匹配
- 模板匹配_从图片到视频流
- 直方图匹配
- 直方图匹配
- 直方图匹配
- 直方图匹配
- 直方图匹配
- 直方图匹配
- 人脸的匹配-----直方图匹配和SURF特征匹配
- 基于颜色直方图的搜索
- 从0开始使用swfupload详细介绍
- 单点登录
- javasript 基本语法
- coderforce 549A Face Detection
- Maven详解之仓库------本地仓库、远程仓库
- 基于直方图的匹配_视频流
- 【jQuery】 文档操作 -- empty( ) 方法
- CodeForces - 578B "Or" Game
- 滤镜
- jsp(jstl标签)学习网址
- 常见面试之机器学习算法思想简单梳理
- IE与FF脚本兼容性问题
- nyoj--983--首尾相连数组的最大子数组和(动态规划)
- 仿淘宝购物车,js选择效果