MeanShift代码-----应用中遇到的问题和解决+函数介绍

1、代码定义了byte类型

     //define data types
     typedef unsigned char byte;

     即转换当成uchar转换即可

2、使用函数

     主要的功能包括Filter和Segement,调用函数处理图像前需要定义图像数据,通过下面方法定义

     msImageProcessor msIP;

     msIP.DefineImage((byte*)img->imageData, COLOR, img->height, img->width);

     //COLOR是ms中定义的一种类型:enum imageType {GRAYSCALE, COLOR};

    //COLOR是彩色图像表示三通道,GRAYSCALE是灰度图像,一个通道

    //定义之后即可进行其他处理

 

贴上我的主程序,以后弄丢了好找

 

// meanshift.cpp : Defines the entry point for the console application.

//

 

#include "stdafx.h"

#include "cv.h"

#include <tchar.h>

#include "highgui.h"

#include "Params.h"

#include "time.h"

#include "stdio.h"

#include <iostream>

 

using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])

{

int sigmaS = 6;

float sigmaR = 7;

int minRegion = 10;

//以上为三个参数----重要

char imgName[MAX_PATH] = {'/0'};

int count = 0;

//sprintf(imgName, "img-10.21op2-p-015t000-resized");

char add[MAX_PATH] = {'/0'};

//sprintf(imgadd, ".dataimages%s.jpg", imgName);

FILE *trainList = fopen(".//data//evalList.txt", "r");

FILE *out;

 

int *labels_out;

float *modes_out;

int *MPC_out;

int regionCount = 0;

int h = 0, w = 0;

IplImage *img;

IplImage *rst;

//统计一下运行的时间

clock_t start, end;

while(fscanf(trainList, "%s", &imgName)!=EOF){

printf("%s...", imgName);

start = clock();

count++;

sprintf(add, ".dataimages%s.jpg", imgName);

 

img = cvLoadImage(add);

rst = cvCloneImage(img);

regionCount = 0;

msImageProcessor msIP;

 

msIP.DefineImage((byte*)img->imageData, COLOR, img->height, img->width);

msIP.Segment(sigmaS, sigmaR, minRegion, HIGH_SPEEDUP);

 

regionCount = msIP.GetRegions(&labels_out, &modes_out, &MPC_out);

printf("regionCount = %d", regionCount);

msIP.GetResults((byte*)rst->imageData);

RegionList *rl = msIP.GetBoundaries();

//结果输出

//save labels_out

sprintf(add, ".datameanshift%s.sp.txt", imgName);

out = fopen(add, "w");

for(h = 0; h<320; h++){

for(w = 0; w<240; w++){

fprintf(out, "%d ", labels_out[h*240+w]);

}

fprintf(out, "/n");

}

fclose(out);

//msIP.~msImageProcessor();

 

delete [] labels_out;

delete [] modes_out;

delete [] MPC_out;

cvReleaseImage(&img);

cvReleaseImage(&rst);

end = clock();

cout<<"Run time: "<<(double)(end - start) / CLOCKS_PER_SEC / 60<<"min ";

printf("done! No.%d/n", count);

}

 

system("PAUSE");

return 0;

}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值