0

Matlab 関数を含む DLL ファイルがあります。VC++ MFC 2012 で関数を使用すると、エラーが表示されました。私がしたことは、ファイルのパスを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);

問題は2行にあると思います:

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

編集後の画像を表示したい。これは、最初のフレームを取得して編集してから表示し、2 番目のフレームを取得して編集して表示するようなものです...

4

0 に答える 0