###前提・実現したいこと
ここに質問したいことを詳細に書いてください
TV-L1を使ったopticalflowのアルゴリズムを動画に適用して、その結果を動画に出力する
###発生している問題・エラーメッセージ
OpenCV Error: Assertion failed (src.depth() == dst.depth()) in cvCvtColor, file /tmp/opencv20160107-29960-t5glvv/opencv-2.4.12/modules/imgproc/src/color.cpp, line 4421
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /tmp/opencv20160107-29960-t5glvv/opencv-2.4.12/modules/imgproc/src/color.cpp:4421: error: (-215) src.depth() == dst.depth() in function cvCvtColor
flowBgrを書き出そうとしたらこのエラーが出た
###該当のソースコード
ここにご自身が実行したソースコードを書いてください
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/superres/optical_flow.hpp>
#include <opencv2/video/tracking.hpp>
#define res 0.5
using namespace cv;
using namespace cv::superres;
int main()
{
// 動画ファイルの読み込み
String failname = "test3";
VideoCapture capture = VideoCapture(failname + ".mp4");
// TV-L1アルゴリズムによるオプティカルフロー計算オブジェクトの生成
Ptr<DenseOpticalFlowExt> opticalFlow = superres::createOptFlow_DualTVL1();
// 前のフレームを保存しておく Mat prev; capture >> prev; resize(prev, prev, Size(), res, res); int width = prev.cols; int height = prev.rows; //動画書き出しのファイル VideoWriter writer(failname + "TV-L1Video.avi",CV_FOURCC_MACRO('S', 'V', 'Q', '3'),20.0,Size(width,height),true); while (waitKey(1) == -1) { // 現在のフレームを保存 Mat curr; capture >> curr; resize(curr, curr, Size(), res, res); // オプティカルフローの計算 Mat flowX, flowY; opticalFlow->calc(prev, curr, flowX, flowY); // オプティカルフローの可視化(色符号化) // オプティカルフローを極座標に変換(角度は[deg]) Mat magnitude, angle; cartToPolar(flowX, flowY, magnitude, angle, true); // 色相(H)はオプティカルフローの角度 // 彩度(S)は0~1に正規化したオプティカルフローの大きさ // 明度(V)は1 Mat hsvPlanes[3]; hsvPlanes[0] = angle; normalize(magnitude, magnitude, 0, 1, NORM_MINMAX); // 正規化 hsvPlanes[1] = magnitude; hsvPlanes[2] = Mat::ones(magnitude.size(), CV_32F); // HSVを合成して一枚の画像にする Mat hsv; merge(hsvPlanes, 3, hsv); // HSVからBGRに変換 Mat flowBgr; cvtColor(hsv, flowBgr, cv::COLOR_HSV2BGR); // 表示 imshow("input", curr); imshow("optical flow", flowBgr); imwrite("s.png", flowBgr*255); writer<<flowBgr; // 前のフレームを保存 prev = curr; }
}
###補足情報(言語/FW/ツール等のバージョンなど)
C++ Opencv2.4.9 xcode
あなたの回答
tips
プレビュー