0

有一个包含 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

我想在编辑后显示图像。这就像获取第一帧,编辑然后显示,获取第二帧,编辑并显示......

4

0 回答 0