静止画ではなく、動画から画像を処理し始めたところです。それを行う適切な方法は何ですか?
- 通常、画像のすべてのフレームを処理しますか?
- つまり、RGBをHSV色空間などに変更したい場合、人々は通常ここで何をしますか?
私はビデオ処理の経験がないので、ここにガイドが必要です。
皆さんありがとう。
編集:RGBからHSVに変換しているだけなのに、opencvで処理されたビデオと元のビデオの間に大きな遅れがある理由を誰かが知っていますか?
ビデオ処理は常にフレームごとに行われます。たとえば、RGBビデオをHSVに変換する場合は、次の手順を実行します。
アップデート:
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用のメモリを事前に割り当てる必要がある場合があります。こちらのドキュメントをお読みください。