OpenCV C++ 将 IPL 更改为 MAT 累积
opencv c++ change ipl to mat accumulate
我试图将代码 IPL 更改为 mat
但失败了
我使用 OpenCV 4.1.2
此示例使用 OpenCV 2.4.13
https://jadeshin.tistory.com/entry/cvAcc 에-의한-배경-영상-계산
我不能使用 IPL
所以我改变了
#include <opencv2opencv.hpp>
#include <opencv2highguihighgui.hpp>
#include <opencv2coremat.hpp>
#include <opencv2imgproc.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;
}
编译没有错,但执行没有错
我也试过了,赶上
但也失败了
积累有什么问题?
C++版本的累积void accumulate(InputArray src, InputOutputArray dst, InputArray mask=noArray() )
您正在传递 NULL 而不是noArray()
. 所以只需做:
accumulate(grayImage, sumImage);
cv::noArray() is an empty Mat not NULL.
编辑:
也改变
Size size = Size((int)CAP_PROP_FRAME_WIDTH, (int)CAP_PROP_FRAME_HEIGHT);
自
Size size = Size((int)cap.get(CV_CAP_PROP_FRAME_WIDTH), (int)cap.get(CV_CAP_PROP_FRAME_HEIGHT));
相关文章:
- Difference in displaying cv2 Mat
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何使用 std::累积在 C++ 中计算总和立方体
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 将CHW格式的浮点向量转换为cv::Mat
- C++中的openCV Mat访问冲突
- 如何从递归函数中完全返回,该函数给出了每个函数结果的累积相加?
- 有效地计算多维数组的累积和?
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 我可以将向量作为initial_sum和不同的函数传递给 std::累积吗?
- 使用 mat.at<uchar>(i,j) 的 opencv C++中的矩阵赋值错误
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 标准::累积C++20版本
- 将 cv::mat 转换为 QImage
- 两个垫子的 OpenCV 数据是相同的,但使用 Mat::at 检索时的值已损坏
- C++ Code 在 for 循环期间不会累积变量中的总和,仅提供最终迭代值
- MSVC 中从 _Ty 警告到 int 警告的转换累积
- 为什么累积C++定义了两个模板
- OpenCV C++ 将 IPL 更改为 MAT 累积