Cライブラリを使って未加工画像をインポートする
LibRaw (http://www.libraw.org)はデジタルカメラから得られたRAWファイル(CRW/CR2,NEF,RAF,DNG等)を読み込むためのライブラリである.librawを使って未加工画像をWolfram言語にインポートする.
以下の関数read_raw_imageはファイルへのパスを取り,画像式を返す.完全な例題はここをご覧いただきたい.
EXTERN_C DLLEXPORT int read_raw_image(WolframLibraryData libData, mint Argc,
MArgument *Args, MArgument res) { ... WolframImageLibrary_Functions imgFuns = libData->imageLibraryFunctions; ... file = MArgument_getUTF8String(Args[0]); libraw_open_file(iprc, file); libraw_unpack(iprc); iprc->params.output_bps = 8; ... img = libraw_dcraw_make_mem_image(iprc, &check); ... if (img->bits == 16) { raw_t_ubit16 * raw_data = (raw_t_ubit16*)img->data; imgFuns->MImage_new2D( img->width, img->height, 3, MImage_Type_Bit16, MImage_CS_RGB, 1, &out); memcpy(imgFuns->MImage_getBit16Data(out), raw_data, img->width * img->height * 3 * sizeof(raw_t_ubit16)); } else { ... } MArgument_setMImage(res, out); ... }
関数をロードし,それを使って未加工ファイルをインポートする.
In[1]:= | ![]() X |
Out[1]= | ![]() |
In[2]:= | ![]() X |
Out[2]= | ![]() |
In[3]:= | ![]() X |
Out[3]= | ![]() |