まず、やり方としては、
1.合成後のイメージを作る
2.合成前のイメージを合成後のイメージにコピーする領域を作り、2つを関連付ける。
3.合成前のイメージを合成後のイメージにコピーする。
4.表示
ではソースは。(簡易ソースなのでWebカメラの分は抜いています。また、合成前のイメージは640x480としています。)
// 合成前のイメージ Windowの準備
cv::Mat cam1image;
cv::Mat cam2image;
cv::namedWindow("Camera Image", CV_WINDOW_AUTOSIZE);
// 1. 合成後のイメージを作る
cv::Mat combinedImage(cv::Size(1280, 480), CV_8UC3);
// 2. 合成前のイメージを合成後のイメージにコピーする領域を作り、2つを関連付ける。
cv::Mat imageLeft(combinedImage, cv::Rect(0, 0, cam1image.cols, cam1image.rows));
cv::Mat imageRight(combinedImage, cv::Rect(640, 0, cam2image.cols, cam2image.rows));// 3.合成前のイメージを合成後のイメージにコピーする。
cam1image.copyTo(imageLeft);
cam2image.copyTo(imageRight);
// 4.表示
cv::imshow("Camera Image", combinedImage);
ちなみに悩んでいたのは、2のところの3番目と4番目の引数を次のように書いていたからです。実行後にエラーがでます。
cv::Mat imageRight(combinedImage, cv::Rect(640, 0, cam2image.cols+640, cam2image.rows));
関数のマニュアルはちゃんと読みましょうって教訓でした。
参考:
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14117591624
0 件のコメント:
コメントを投稿