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 番目のフレームを取得して編集して表示するようなものです...