我试图使用vl_slic_segment存储在OpenCV Mat中的输入图像来使用VLFeat库的功能.我的代码正在编译和运行,但输出的超像素值没有意义.到目前为止,这是我的代码:
Mat bgrUChar = imread("/pathtowherever/image.jpg");
Mat bgrFloat;
bgrUChar.convertTo(bgrFloat, CV_32FC3, 1.0/255);
cv::Mat labFloat;
cvtColor(bgrFloat, labFloat, CV_BGR2Lab);
Mat labels(labFloat.size(), CV_32SC1);
vl_slic_segment(labels.ptr<vl_uint32>(),labFloat.ptr<const float>(),labFloat.cols,labFloat.rows,labFloat.channels(),30,0.1,25);
Run Code Online (Sandbox Code Playgroud)
我试过不将它转换为Lab颜色空间并设置不同的regionSize/regularrization,但输出总是非常小问题.我能够正确检索标签值,事情是每个标签通常散布在一个非连续的小区域.
我认为问题是我的输入数据格式错误但我无法弄清楚如何将其正确发送到该vl_slic_segment功能.
先感谢您!
编辑
谢谢David,正如您帮助我理解的那样,vl_slic_segment希望数据按[LLLLLAAAAABBBBB]排序,而OpenCV则为LAB颜色空间排序其数据[LABLABLABLABLAB].
我很确定这是一个基本问题,但我无法在任何地方找到答案(可能是因为错误的搜索条件).
以下代码是否会造成内存泄漏?
int * ptr= new int(15);
ptr= new int(25);
Run Code Online (Sandbox Code Playgroud)
new在第二次在同一指针上调用操作符之前,是否必须删除第一个指针?