opencv - c ++:我如何使用fastNlMeansDenoisingColoredMulti()

问题描述 投票:0回答:1

我有一个视频(130帧)。当我运行我的代码时,我的结果是一行代替图像所以我想我没有正确使用fastNlMeansDenoisingColored Multi功能。我该怎么办?

int main(int argc, char** argv){
    VideoCapture video("F:\\tarashi\\datasets\\video\\1.mp4");
    if (!video.isOpened())
    {
        cout << "Error opening video stream or file" << endl;
        return -1;
    }
    namedWindow("test video", 1);
    int i = 0;
    Mat image[130];
    for (;i<130;i=i+1)
    {
        Mat frame;
        video >> frame; // get a new frame from camera   
        image[i] = frame;
        imshow("test video", frame);

        if (waitKey(30) >= 0) break;
    }
    //Video opened and the image sequence is created.

    Mat result;
    fastNlMeansDenoisingColoredMulti(image[129],result,65,129,3,3,7,21);
    imshow("denoised Image", result);
    waitKey();
    return 0;
    }

示例:这是视频的屏幕截图:enter image description here所以期待输出完整的图片。但我的输出(结果)是:enter image description here

c++ opencv video
1个回答
0
投票

fastNlMeansDenoisingColoredMulti(InputArrayOfArrays srcImgs,OutputArray dst,int imgToDenoiseIndex,int temporalWindowSize,float h = 3,float hColor = 3,int templateWindowSize = 7,int searchWindowSize = 21);

InputArrayOfArrays srcImgs - 图像数组,但您只放置一个帧。试试这个:

std::vector<cv::Mat> images;
...
images.push_back(frame);
...
fastNlMeansDenoisingColoredMulti(images, ...
© www.soinside.com 2019 - 2024. All rights reserved.