3

静止画ではなく、動画から画像を処理し始めたところです。それを行う適切な方法は何ですか?

  1. 通常、画像のすべてのフレームを処理しますか?
    • つまり、RGBをHSV色空間などに変更したい場合、人々は通常ここで何をしますか?

私はビデオ処理の経験がないので、ここにガイドが必要です。

皆さんありがとう。

編集:RGBからHSVに変換しているだけなのに、opencvで処理されたビデオと元のビデオの間に大きな遅れがある理由を誰かが知っていますか?

4

1 に答える 1

4

ビデオ処理は常にフレームごとに行われます。たとえば、RGBビデオをHSVに変換する場合は、次の手順を実行します。

  1. ビデオファイルを開きます。
  2. カラーフレーム(RGBフレーム)を読み取ります。
  3. フレームをRGBからHSV色空間に変換します。
  4. 変換されたフレームで好きなことをします。
  5. 手順2に進みます。

アップデート:

RGBビデオをHSVに変換するためのC++サンプルコード:

#include<iostream>
#include<string>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

using namespace std;

int main()
{
   cv::VideoCapture capture;
   cv::Mat RGB, HSV;

   string videoPath = "C:/video.avi";

   if(!capture.open(videoPath))
   {
     cout<<"Video Not Found"<<endl;
     return;
   }

    while(true)
    {
       capture>>RGB;  //Read a frame from the video

       if(RGB.empty()) //Check if the frame has been read correctly or not
       {
          cout<<"Capture Finished"<<endl;
          break;
       }

       cv::cvtColor(RGB,HSV,CV_BGR2HSV);

       cv::imshow("HSV Image",HSV);
       cv::waitKey(10);
    }

    capture.release();
    return 0;
}

色変換機能では、HSV用のメモリを事前に割り当てる必要がある場合があります。こちらのドキュメントをお読みください。

于 2012-10-18T08:50:23.463 に答える