资源简介
在opencv平台下,依靠颜色识别和跟踪物体,毕业设计
代码片段和文件信息
// genzong.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “highgui.h“
#include“math.h“
#include
#include
#include “cv.h“
#include “cxcore.h“
IplImage *myimage = 0 *myhsv;
IplImage *myguiyi_frame;
IplImage *mythresholded;
IplImage *mydst;
CvPoint origin;
int select_object = 0;
CvRect selection;
int track_object = 0;
CvScalar guiyi_min;
CvScalar guiyi_max;
IplConvKernel * element = 0;
const int element_shape = CV_SHAPE_ELLIPSE;
double r;
//创建归一化的图像;
IplImage* NormalizeImage(IplImage *img)
{
IplImage* imgavg = cvCreateImage(cvGetSize(img) 8 3);
//获取图像高度和宽度信息,设置epslon的目的是防止除0的操作产生;
int width = img->width;
int height = img->height;
int redValue greenValue blueValue;
double sum epslon = 0.000001;
//计算归一化的结果,并替换掉原像素值;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
CvScalar src = cvGet2D(img y x);
blueValue = src.val[0];
greenValue = src.val[1];
redValue = src.val[2];
// 加上epslon,为了防止除以0的情况发生
sum = redValue + greenValue + blueValue + epslon;
CvScalar des = cvScalar(blueValue / sum * 255 greenValue / sum * 255 redValue / sum * 255 src.val[3]);
//为指定的数组(xy)元素赋初值des,替换掉原像素值 2013.3.11
cvSet2D(imgavg y x des);
}
}
//返回归一化后的图像;
return imgavg;
}
void draw_box(IplImage *img CvRect rect)
{
double ab;
a=rect.width ;
b=rect.height ;
r=sqrt(a*a+b*b);
cvCircle(imgoriginrCV_RGB(02550) 3 8 0);
}
void on_mouse( int event int x int yint flagsvoid *NotUsed)//该函数用于选择跟踪目标
{
double ab;
if( !myimage )
return;
if( myimage->origin )
y = myimage->height - y;
if( select_object )//如果处于选择跟踪物体阶段,则对selection用当前的鼠标位置进行设置
{
selection.x = MIN(xorigin.x);
selection.y = MIN(yorigin.y);
selection.width = selection.x + CV_IABS(x - origin.x);
selection.height = selection.y + CV_IABS(y - origin.y);
selection.x = MAX( selection.x 0 );
selection.y = MAX( selection.y 0 );
selection.width = MIN( selection.width myimage->width );
selection.height = MIN( selection.height myimage->height );
selection.width -= selection.x;
selection.height -= selection.y;
}
switch( event )
{
case CV_EVENT_LBUTTONDOWN://开始点击选择跟踪物体
origin = cvPoint(xy);
selection = cvRect(xy00);//坐标
select_object = 1;//表明开始进行选取
break;
case CV_EVENT_LBUTTONUP:
select_object = 0;//选取完成
if( selection.width > 0 && selection.height > 0 )
track_object = -1;//如果选择物体有效,则打开跟踪功能
break;
}
draw_box(myimageselection);
}
int main(int argc char** argv)
{
//double ab;
double Hsum=0.0Ssum=0.0Vsum=0.0sum=0.0m=0.0n=0.0;
unsigned int cijwhHSVR;
int ch;
CvCapture* capture = 0;
IplImage* frame = 0;
capture = cvCaptureFromCAM(0);//打开摄像头
if( !capture )
{
printf(“Could not initialize capturing...\n“);//打开视频流失败处理
return -1;
}
int wid
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 41472 2013-06-24 09:56 shigen\Debug\shigen.exe
文件 407792 2013-06-24 09:56 shigen\Debug\shigen.ilk
文件 1387520 2013-06-24 09:56 shigen\Debug\shigen.pdb
文件 12800 2013-06-24 10:02 shigen\Release\shigen.exe
文件 1010688 2013-06-24 10:02 shigen\Release\shigen.pdb
文件 14136 2013-06-24 09:56 shigen\shigen\Debug\BuildLog.htm
文件 65 2013-06-24 09:56 shigen\shigen\Debug\mt.dep
文件 663 2013-06-24 09:56 shigen\shigen\Debug\shigen.exe.em
文件 728 2013-06-24 09:56 shigen\shigen\Debug\shigen.exe.em
文件 621 2013-06-24 09:56 shigen\shigen\Debug\shigen.exe.intermediate.manifest
文件 139475 2013-06-24 09:56 shigen\shigen\Debug\shigen.obj
文件 3211264 2013-06-24 09:56 shigen\shigen\Debug\shigen.pch
文件 11849 2013-06-24 09:56 shigen\shigen\Debug\stdafx.obj
文件 478208 2013-06-24 09:56 shigen\shigen\Debug\vc90.idb
文件 995328 2013-06-24 09:56 shigen\shigen\Debug\vc90.pdb
文件 1177 2013-06-24 09:55 shigen\shigen\ReadMe.txt
文件 9922 2013-06-24 10:02 shigen\shigen\Release\BuildLog.htm
文件 65 2013-06-24 10:02 shigen\shigen\Release\mt.dep
文件 616 2013-06-24 10:02 shigen\shigen\Release\shigen.exe.intermediate.manifest
文件 1540518 2013-06-24 10:02 shigen\shigen\Release\shigen.obj
文件 3211264 2013-06-24 10:02 shigen\shigen\Release\shigen.pch
文件 36871 2013-06-24 10:02 shigen\shigen\Release\stdafx.obj
文件 191488 2013-06-24 10:02 shigen\shigen\Release\vc90.idb
文件 847872 2013-06-24 10:02 shigen\shigen\Release\vc90.pdb
文件 7396 2013-06-24 09:56 shigen\shigen\shigen.cpp
文件 5034 2013-06-24 09:56 shigen\shigen\shigen.vcproj
文件 1403 2013-06-24 10:02 shigen\shigen\shigen.vcproj.lei.jiao.user
文件 211 2013-06-24 09:55 shigen\shigen\stdafx.cpp
文件 233 2013-06-24 09:55 shigen\shigen\stdafx.h
文件 498 2013-06-24 09:55 shigen\shigen\targetver.h
............此处省略12个文件信息
- 上一篇:企业网站源码完整版后台可用
- 下一篇:Jsoup网络爬虫
相关资源
- INBarcodeOCR条码识别组件,识别率及速
- 文软快递单扫描识别软件 v8.1 简易版
- 4×4矩阵式键盘识别技术源码
- 基于模型识别的小电流接地选线方法
- 指纹自动考勤系统的设计与实现
- 特定人语音识别技术在汽车控制上的
- 基于小波和Wigner-Ville分布的轨道不平
- XP如何识别AMD机上SATA的AHCI模式
- 突水水源的独立性权–模糊可变理
- 用于牛奶质量检测的RFID天线设计
- 生物压力识别技术在银行安全中的应
- 人脸识别开源SDK源码
- 识别电子发票、处理pdf文件及二维码
- 倍加福二维码识别模块使用手册
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- Google OCR API源代码和神经网络识别OC
- 百度人脸识别Demo
- delphi百度人脸识别离线SDK demo
- 讯飞人脸识别eclipse版
- Delphi7调用虹软人脸识别的测试
- opencv_contrib-3.4.0.zip
- 基于SSD的车辆检测与识别
- opencv2.4.9源码分析——SIFT
- 基于CNN的静态手势识别系统
- [b115]FPGA上运行人脸识别源代码.zip
- shape_predictor_68_face_landmarks.dat.bz2 68个标
- labview语音识别程序
- 用两个摄像头实现,双目标定,双目
- robomaster自动识别开源
- 手写数字识别-模板匹配法
评论
共有 条评论