1

H.264 ビデオ ストリームがあり、そこからフレームを抽出する必要があります。ただし、フレームを抽出すると、色のセグメンテーションを実行する必要があるため、品質が非常に悪くなります。フレームを抽出して BGR に変換し、より良い品質の画像を得る方法を知りたいです。

これが私がこれまでに持っているコードです:

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

using namespace cv;
using namespace std;

int main(){
    VideoCapture capture("1.dv4");
    if(!capture.isOpened())
        return 1;

    double rate=capture.get(CV_CAP_PROP_FPS);

    bool stop(false);

    Mat frame;
    namedWindow("Extracted Frame",CV_WINDOW_NORMAL);

    cout <<"Rate is="<<rate;

    int delay=1000/rate;

    while(!stop){
        if(!capture.read(frame))
            break;

            imshow("Extracted Frame",frame);
            imwrite("C:/Users/DELL/Documents/Visual Studio 2010/Projects/VideoFrameCapture/VideoFrameCapture/frame.jpg",frame);

        if(waitKey(delay)>=0)
            stop=true;
    }
    capture.release();
    waitKey(0);
    return 1;
}
4

1 に答える 1

0

VideoCapture を開いたら、これを追加します。

 capture.set(CV_CAP_PROP_CONVERT_RGB, 1);
于 2013-11-09T07:12:24.660 に答える