有一个包含 Matlab 函数的 DLL 文件。当我在 VC++ MFC 2012 中使用该函数时,它显示错误。我所做的是将文件路径传递给 Matlab 函数,以便它可以读取它。然而,我又崩溃了。这是我所做的:
在 Matlab 中:
function ImgProc(pathname)
mov=VideoReader(pathname);
nFrames=mov.NumberOfFrames;
for k=1:10
img=read(mov,k);
img=rgb2gray(img);
img = imresize(img, [64, 64]);
imshow(img);
C++ 中的代码:sFileName 是包含视频文件路径的 CString。
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Movie Files (*.avi;*.mpg;*.mp4)|*.avi;*.mpg;*.mp4||"), this);
CString sFileName = dlgFile.GetPathName();
bool a=mclInitializeApplication(NULL,0);
bool b= ImgProcInitialize();
mwArray out(sFileName);
ImgProc(out);
ImgProcTerminate();
mclTerminateApplication();
C++ 中的 ImgProc 函数:
ImgProc(const mwArray& pathname);
所以我想问题出在两行:
mwArray out(sFileName);
ImgProc(out);
请帮我。我已经坚持了几天。
编辑:更新功能:
function ImgProc()
[filename, pathname]=uigetfile({'*.mp4'},'File Selector');
pathname=strcat(pathname,filename);
mov=VideoReader(pathname);
nFrames=mov.NumberOfFrames;
for k=1:nFrames
img=read(mov,k);
img=rgb2gray(img);
img = imresize(img, [64, 64]);
img = im2double(img); % now in 0 .. 1.0
img = fix(img*15); % truncate to int 0..15
img = img/15;
imshow(img);
end
我想在编辑后显示图像。这就像获取第一帧,编辑然后显示,获取第二帧,编辑并显示......