3

我刚刚开始处理视频中的图像而不是静止图像。正确的做法是什么?

  1. 我们通常会处理每一帧图像吗?
    • 意思是,如果我想将 RGB 更改为 HSV 颜色空间等。人们通常在这里做什么?

在这里需要一些指导,因为我没有视频处理经验。

谢谢大家。

编辑:有谁知道为什么在opencv中处理的视频与原始视频相比存在显着滞后,即使它只是从RGB转换为HSV?

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 回答