首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv c++将ipl更改为mat累积

opencv c++将ipl更改为mat累积
EN

Stack Overflow用户
提问于 2019-12-03 03:41:11
回答 1查看 156关注 0票数 0

我试图将代码ipl更改为mat。

但失败了

我使用opencv 4.1.2

此示例使用opencv 2.4.13

https://jadeshin.tistory.com/entry/cvAcc에-의한-배경-영상-계산

我不能使用ipl

所以我改变了

代码语言:javascript
复制
 #include <opencv2\opencv.hpp>
 #include <opencv2\highgui\highgui.hpp>
 #include <opencv2\core\mat.hpp>
 #include <opencv2\imgproc.hpp>
 #include <iostream>

using namespace cv;
using namespace std;

int main()
{
    VideoCapture cap("ball.avi");
    if (!cap.isOpened())
    {
            cout << "file not found." << endl;
            return 0;
    }
    Mat image;
    Size size = Size((int)CAP_PROP_FRAME_WIDTH, (int)CAP_PROP_FRAME_HEIGHT);
    Mat grayImage(size, CV_8UC1);
    Mat sumImage(size, CV_32FC1);
    sumImage.setTo(Scalar::all(0));
    int nFrameCount = 0;
    for (;;)
    {
            cap.read(image);
            if (image.empty())
            {
                    cout << "could'nt capture" << endl;
                    break;
            }

            cvtColor(image, grayImage, COLOR_BGR2GRAY);
            accumulate(grayImage, sumImage, NULL); //here is error
            imshow("grayImage", grayImage); 
            char chKey = waitKey(50);
            if (chKey == 27)
                    break;
            nFrameCount++;
    }
    convertScaleAbs(sumImage, sumImage, 1.0 / nFrameCount);
    imwrite("ballBkg.jpg", sumImage);
    destroyAllWindows();
    return 0;
}

编译没有什么不对的,但是没有错的。

我也试过,抓住

但也失败了

累积有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 03:48:47

累加void accumulate(InputArray src, InputOutputArray dst, InputArray mask=noArray() )void accumulate(InputArray src, InputOutputArray dst, InputArray mask=noArray() )版本

您将传递NULL而不是noArray()。所以就这么做吧:

代码语言:javascript
复制
accumulate(grayImage, sumImage);  


 cv::noArray() is an empty Mat not NULL.

编辑:

也变了

代码语言:javascript
复制
Size size = Size((int)CAP_PROP_FRAME_WIDTH, (int)CAP_PROP_FRAME_HEIGHT);

代码语言:javascript
复制
Size size = Size((int)cap.get(CV_CAP_PROP_FRAME_WIDTH), (int)cap.get(CV_CAP_PROP_FRAME_HEIGHT));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59149870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档