Matlab的新手......
基本上我只想跑:
https://github.com/panly099/sketchSynthesis
主.m文件是synGUI文件夹中的'image2sketch.m'
但我在Windows 7上而不是linux,所以我被告知我需要将剩余的.cpp文件编译为mex文件才能运行。
我认为它与Matlab编译器或编码器有关,但我真的不知道我应该编译的文件是什么或哪些.cpp文件是为了正确运行它。
这些是当前运行'image2sketch.m'时出现的错误:
image2sketch
[==================================================
current cluster id: 1
Error using chamferLocate (line 103)
Undefined function 'mex_fitline' for input arguments of type 'struct'.
Error in strokeSampling>(parfor body) (line 71)
[strokeMatched, curCost] = chamferLocate(img, strokeImg, baseScale, baseAspect,
threshold);
Error in strokeSampling (line 38)
parfor j = 1 : length(curRepStrokes)
Error in image2sketch>pushbutton_Bbox_Callback (line 193)
configuration = strokeSampling(edgeSecond, strokeModel,detScale(cateId), 1.1, 1.1, 0.7, 5);
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in image2sketch (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)image2sketch('pushbutton_Bbox_Callback',hObject,eventdata,guidata(hObject))
Caused by:
Undefined function 'mex_fitline' for input arguments of type 'struct'.
Error while evaluating uicontrol Callback
任何帮助都将不胜感激。
答案 0 :(得分:1)
一般答案: 在Matlab中导航到包含.cpp文件的文件夹
运行:
mex file.cpp -output mex_fitline
(将file.cpp替换为实际文件名,将mex_fitline替换为m文件中缺失函数的名称(与错误消息中的相同)。 如果您安装了正确的C / C ++编译器,并且file.cpp不需要其他文件,那么应该这样做。 您可能需要在不同的文件夹中多次执行此操作,直到构建了所有必需的mex文件。
如果您没有编译器,可以下载并安装随编译器一起提供的免费Visual Studio社区软件。安装VS社区后,重新启动PC,然后运行mex -setup告诉Matlab which compiler to use.
如果你需要多个文件file1.cpp file2.cpp等,那么命令通常就像
mex file1.cpp file2.lib file3.h... -output mex_name