opencv - c ++: как использовать fastNlMeansDenoisingColoredMulti () - PullRequest
0 голосов
/ 09 марта 2019

У меня есть видео (130 кадров).когда я запускаю свой код, мой результат представляет собой строку вместо изображения, поэтому я предполагаю, что неправильно использую функцию fastNlMeansDenoisingColoredMulti.Что мне делать?

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

1 Ответ

0 голосов
/ 11 марта 2019

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, ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...