OpenCV 超分辨率 OutputArray frame

超分辨率文档中,输出下一帧所需的代码是:
void superres::SuperResolution::nextFrame(OutputArray frame)

输入帧源必须通过以下方式设置:
void superres::SuperResolution::setInput(const Ptr<FrameSource>& frameSource)

我有一段从视频中获取帧的代码:

#include "opencv2/opencv.hpp"#include "iostream"using namespace cv;using namespace std;int main(int, char**){    VideoCapture cap ( "video1.mp4" ); // 打开默认摄像头    if( ! cap.isOpened () )  // 检查是否成功打开        return -1;    /* Mat edges; */    namedWindow ( "Video" , 1 );    double frnb ( cap.get ( CV_CAP_PROP_FRAME_COUNT ) );    std::cout << "帧总数 = " << frnb << endl;    for(;;)     {        Mat frame;        double fIdx;        std::cout << "请输入帧索引? ";        std::cin >> fIdx;        if ( fIdx < 0 || fIdx >= frnb ) break;        cap.set ( CV_CAP_PROP_POS_FRAMES , fIdx );        bool success = cap.read(frame);         if ( ! success )         {            cout << "无法读取帧 " << endl;            break;        }        /* cap >> frame; // 从摄像头获取新帧 */        imshow("Video", frame);        if ( waitKey (0) == 27 ) break;    }    // 摄像头会在VideoCapture析构函数中自动去初始化    return 0;}

鉴于此,我可以使用frame变量作为setInput方法的参数,但如何初始化生成输出的OutputArray frame呢?


回答:

我认为你不能将frame用作setInput的参数,而且你不需要初始化OutputArray frame

查看这个示例

FrameSource的创建方式如下:

   121. frameSource = createFrameSource_Video(inputVideoName);

然后,outputArray frame的使用方式如下:

   142. Mat result; // 无需初始化,只需声明   144. MEASURE_TIME(superRes->nextFrame(result));

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注