Я видел этот ответ о суперпиксельной сегментации здесь SLIC c ++ сегментация
Я хочу знать, где я могу найти новый API C ++, который обсуждался там.
Я на самом деле получил это от http://www.vlfeat.org/sandbox/download.html
Это мой код:
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
extern "C"{
#include<C:\\vlfeat\vl\slic.h>
#include"C:\\vlfeat\vl\slic.c"}
using namespace cv;
int main()
{
Mat img=imread("E:\\brush.jpg");
Mat floatimg;
img.convertTo(floatimg,CV_32FC3);
Mat label(floatimg.size(),CV_32SC1);
vl_slic_segment(label.ptr<vl_uint32>(),floatimg.ptr<float>(),floatimg.cols,floatimg.rows,floatimg.channels(),15,0.1,1);
imshow("out", img);
waitKey(0);
}
Проблема, с которой я сейчас сталкиваюсь,
что я получаю эти ошибки:
Error 2 error C2440: '=' : cannot convert from 'void *' to 'float *' c:\vlfeat\vl\slic.c 203
Error 3 error C2440: '=' : cannot convert from 'void *' to 'vl_uint32 *' c:\vlfeat\vl\slic.c 204
Error 4 error C2440: '=' : cannot convert from 'void *' to 'float *' c:\vlfeat\vl\slic.c 205
Error 8 error C2440: 'initializing' : cannot convert from 'void *' to 'vl_uint32 *' c:\vlfeat\vl\slic.c 341
Error 9 error C2440: 'initializing' : cannot convert from 'void *' to 'vl_uindex *' c:\vlfeat\vl\slic.c 342
11 IntelliSense: a value of type "void *" cannot be assigned to an entity of type "float *" c:\vlfeat\vl\slic.c 203
12 IntelliSense: a value of type "void *" cannot be assigned to an entity of type "vl_uint32 *" c:\vlfeat\vl\slic.c 204
13 IntelliSense: a value of type "void *" cannot be assigned to an entity of type "float *" c:\vlfeat\vl\slic.c 205
14 IntelliSense: a value of type "void *" cannot be used to initialize an entity of type "vl_uint32 *" c:\vlfeat\vl\slic.c 341
15 IntelliSense: a value of type "void *" cannot be used to initialize an entity of type "vl_uindex *" c:\vlfeat\vl\slic.c 342
Задача ещё не решена.
Других решений пока нет …