C言語でBMP画像を読み込み、matlabで処理するDLLに引き渡して処理をしたい時、画像の渡すにはどうすればよいのですか?
古いコメントを表示
mxArray *in4
unsigned char *inputimage;
unsigned char BitMapFileHeader[14];//BMPのファイルヘッダーを保存する
unsigned int biSize;//BMPのサイズを保存する
int biWidth;//BMPの幅を保存する
int biHeight;//BMPの高さを保存する
unsigned char BitMapInfoHeader[28];//上記3つ以外のBMPの情報ヘッダーを保存する
int i,j,c;//for文用
FILE *fp;//ファイルポインタ
int dims[3];
fp = fopen("~//example.bmp","rb");
fread(&BitMapFileHeader, sizeof(unsigned char),14,fp);//ファイルヘッダーを読み込む
fread(&biSize, sizeof(int),1,fp);//情報ヘッダーにあるサイズを読み込む
fread(&biWidth,sizeof(int),1,fp);//情報ヘッダーにある幅を保存
fread(&biHeight,sizeof(int),1,fp);//情報ヘッダーにある高さを保存
fread(&BitMapInfoHeader,sizeof(unsigned char),28,fp);//残りの情報ヘッダーを保存
dims[0] = biHeight;
dims[1] = biWidth;
dims[2] = 3;
inputimage = (unsigned char*)mxMalloc(sizeof(const char*)*biHeight*biWidth*3);
for(i = 0; i<biHeight;i++){//0から幅まで
for(j = 0;j<biWidth; j++){//0から高さまで
for(c=0;c<3;c++){//RGBのそれぞれ
fread((inputimage+i*biWidth*3+j*3+c),sizeof(unsigned char),1,fp);//画素の情報を読み込んで保存する
}
}
}
fclose(fp);
in4 = mxCreateNumericArray(3, (const mwSize*)dims, mxUINT8_CLASS,0);
memcpy(mxGetChars(in4), inputimage, sizeof(unsigned char)*biWidth*biHeight*3);//Run time error Access violation
mlfDllexample(1, &out, in4);//in4で画像を渡し、outで画像を返す。
2 件のコメント
Kojiro Saito
2022 年 1 月 24 日
質問内容についてクリアにさせてください。上記のコードで迷われているのはCでのoutの定義のしかたについてでしょうか?
悠貴 大森
2022 年 1 月 26 日
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で MATLAB Compiler SDK のトラブルシューティング についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!