OpenCV3のHDR合成機能について
OpenCV3.0にあるHDR合成をiOSより利用と思い下記のサイトを参考にコーディングしました。
http://docs.opencv.org/master/d3/db7/tutorial_hdr_imaging.html
コードは下記の通りです。
- (UIImage *)testHDR
{
cv::Mat images;
cv::Mat1f times;
//ここに画像を詰める
cv::Mat srcMat1 = [self cvMatFromUIImage:[UIImage imageNamed:@"HDR1.JPG"]];
cv::Mat srcMat2 = [self cvMatFromUIImage:[UIImage imageNamed:@"HDR2.JPG"]];
cv::Mat srcMat3 = [self cvMatFromUIImage:[UIImage imageNamed:@"HDR3.JPG"]];
images.push_back(srcMat1);
images.push_back(srcMat2);
images.push_back(srcMat3);
//露光時間設定
times.push_back(1/40);
times.push_back(1/60);
times.push_back(1/100);
cv::Mat response;
cv::Ptr<cv::CalibrateDebevec> calibrate = cv::createCalibrateDebevec();
calibrate->process(images, response, times);
cv::Mat hdr;
cv::Ptr<cv::MergeDebevec> merge_debevec = cv::createMergeDebevec();
merge_debevec->process(images, hdr, times, response);
cv::Mat ldr;
cv::Ptr<cv::TonemapDurand> tonemap = cv::createTonemapDurand();
tonemap->process(hdr, ldr);
cv::Mat fusion;
cv::Ptr<cv::MergeMertens> merge_mertens = cv::createMergeMertens();
merge_mertens->process(images, fusion);
return [self UIImageFromCVMat:hdr];
}
そこで実際に動作させるとcalibrate->process(images, response, times);
で落ちてしまいます。多分、imagesとtimesの画像と露光時間の値のセット仕方がよくないだと思うのですが、参考となるソースコードがなくて困っています。
どなたかアドバイスお願い致します。
追記
下記のようなエラーが出力されます。
OpenCV Error: Assertion failed (images.size() == times.total()) in process, file /Volumes/Linux/builds/precommit_ios/opencv/modules/photo/src/calibrate.cpp, line 70
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /Volumes/Linux/builds/precommit_ios/opencv/modules/photo/src/calibrate.cpp:70: error: (-215) images.size() == times.total() in function process