资源简介
meanshift算法实现.rar
![](http://www.nz998.com/pic/59974.jpg)
代码片段和文件信息
#include
bool selectobject = false;
int trackobject = 0;
cv::Rect selection;
cv::Mat image;
void onMouse( int event int x int y int void* ) {
static cv::Point origin;
if(selectobject) {
selection.x = MIN(x origin.x);
selection.y = MIN(y origin.y);
selection.width = std::abs(x - origin.x);
selection.height = std::abs(y - origin.y);
selection &= cv::Rect(0 0 image.cols image.rows);
}
switch(event) {
case CV_EVENT_LBUTTONDOWN:
origin = cv::Point(x y);
selection = cv::Rect(x y 0 0);
selectobject = true;
break;
case CV_EVENT_LBUTTONUP:
selectobject = false;
if( selection.width > 0 && selection.height > 0 )
trackobject = -1;
break;
}
}
int main( int argc const char** argv )
{
cv::VideoCapture video(“test_run.mp4“);
cv::namedWindow( “CamShift“ );
cv::setMouseCallback( “CamShift“ onMouse 0 );
cv::Mat frame hsv hue mask hist backproj;
cv::Rect trackWindow;
int hsize = 16;
float hranges[] = {0180};
const float* phranges = hranges;
while(true) {
video >> frame;
if( frame.empty() )
break;
frame.copyTo(image);
cv::cvtColor(image hsv cv::COLOR_BGR2HSV);
if( trackobject ) {
cv::inRange(hsv cv::Scalar(0 30 10) cv::Scalar(180 256 256) mask);
int ch[] = {0 0};
hue.create(hsv.size() hsv.depth());
cv::mixChannels(&hsv 1 &hue 1 ch 1);
if( trackobject < 0 ) {
cv::Mat roi(hue selection) maskroi(mask selection);
calcHist(&roi 1 0 maskroi hist 1 &hsize &phranges);
normalize(hist hist 0 255 CV_MINMAX);
trackWindow = selection;
trackobject = 1;
}
calcBackProject(&hue 1 0 hist backproj &phranges);
backproj &= mask;
cv::RotatedRect trackBox = CamShift(backproj trackWindow cv::TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER 10 1 ));
if( trackWindow.area() <= 1 ) {
int cols = backproj.cols rows = backproj.rows r = (MIN(cols rows) + 5)/6;
trackWindow = cv::Rect(trackWindow.x - r trackWindow.y - r
trackWindow.x + r trackWindow.y + r) &
cv::Rect(0 0 cols rows);
}
ellipse( image trackBox cv::Scalar(00255) 3 CV_AA );
}
if( selectobject && selection.width > 0 && selection.height > 0 ) {
cv::Mat roi(image selection);
bitwise_not(roi roi);
}
imshow( “CamShift“ image );
char c = (char)cv::waitKey(1000/15.0);
if( c == 27 )
break;
}
cv
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3066 2018-06-17 10:14 main.cpp
----------- --------- ---------- ----- ----
3066 1
- 上一篇:智能变电站辅助监控系统解决方案
- 下一篇:迁移学习相关论文和个人总结
相关资源
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
- 联想启天M4350 BIOS升级文件
- 操作系统教程课后答案华中科技大学
评论
共有 条评论