SelectiveSearch2
Selective Search论文中部分功能的C++实现,eclipse下的C++工程,直接导入即可。具体内容参考相关文论及本人博客。
代码片段和文件信息
/*
* Copyright @ Surge Wong -- 2014/09/05
*/
#include “opencv2/objdetect/objdetect.hpp“
#include “opencv2/features2d/features2d.hpp“
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/calib3d/calib3d.hpp“
#include “opencv2/nonfree/nonfree.hpp“
#include “opencv2/imgproc/imgproc_c.h“
#include “opencv2/legacy/legacy.hpp“
#include “opencv2/legacy/compat.hpp“
#include
#include
#include
#include
#include “FelZenSegment/image.h“
#include “FelZenSegment/misc.h“
#include “FelZenSegment/pnmfile.h“
#include “generate_bounding_boxes.h“
#include “type_convert.h“
using namespace std;
using namespace cv;
int main(int argc char **argv) {
// if(argc < 3){
// fprintf(stderr“Usage:%s inputimage(input) bounding-box(output) sigma k min
“argv[0]);
// fprintf(stderr“For example:
%s lena.jpg BB.txt
“);
// exit(1);
// }
// const char* imagename = argv[1];
// const char* outBB = argv[2];
const char imagename[100] = “4.PPM“;
const char outBB[100] = “BoundingBoxes.txt“;
float sigma = 0.8;
float k = 200;
int min_size = 100;
// read image
Mat img = imread(imagename);
// convert to image type
image* imginput = matToImage(img);
int region_nums;
int* BB = generate_bounding_boxes(imginput sigma k min_size ®ion_nums);
FILE* f;
f = fopen(outBB“w“);
for(int i = 0; i < region_nums;i++){
fprintf(f“%d %d %d %d
“BB[4*i+0]BB[4*i+1]BB[4*i+2]BB[4*i+3]);
}
fclose(f);
for(int i = 0; i < region_nums; i++){
rgb color = random_rgb();
for(int j = BB[4*i+0]; j <= BB[4*i+2]; j++){
imRef(imginputjBB[4*i+1]) = color;
imRef(imginputjBB[4*i+3]) = color;
}
for(int j = BB[4*i+1]; j <= BB[4*i+3]; j++){
imRef(imginputBB[4*i+0]j) = color;
imRef(imginputBB[4*i+2]j) = color;
}
}
img = *imageToMat(imginput);
imwrite(“testmat.jpg“img);
printf(“That is a hard work..
“);
delete imginput;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)