• 大小: 2.94MB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2023-10-27
  • 语言: 其他
  • 标签: opencv  颜色  识别  

资源简介

在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.embed.manifest

     文件        728  2013-06-24 09:56  shigen\shigen\Debug\shigen.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论