- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从我的摄像头中获取帧的运行平均值,但几秒后,平均帧的图像变得越来越亮,而不是白色。
我的摄像头提供具有 3 个 channel 的灰度图像。我在 Windows 7、Visualstudio 2012、opencv 243 上
#include<opencv2\opencv.hpp>
#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{
VideoCapture cap(0);
Mat frame1;
cap.read(frame1);
Mat acc = Mat::zeros(frame1.size(), CV_32FC1);
while(1){
Mat frame;
Mat gray;
cap.read(frame);
cvtColor(frame ,gray ,CV_BGR2GRAY,0);
accumulateWeighted(gray, acc,0.005);
imshow("gray", gray);
imshow("acc", acc);
waitKey(1); //don't know why I need it but without it the windows freezes
}
}
谁能告诉我我做错了什么?谢谢!
最佳答案
这里的问题是 imshow 如何将矩阵值映射到像素值。通常,来自凸轮的原始数据以整数数据类型的形式出现,通常在 [0, 255] 范围内。 accumulateWeighted 函数执行您期望的操作并计算帧的运行平均值。所以 acc 是一个浮点矩阵,其值在 [0, 255] 中。
现在,当您将该矩阵传递给 imshow 时,矩阵值需要映射到强度。由于数据类型是浮点类型,0 被映射到黑色,1 被映射到白色,范围之外的所有内容都被剪掉。因此,只有当图像的某个区域非常很暗并保持这种状态时,运行平均值才会保持在 1 以下并映射到纯白色以外的其他颜色。
幸运的是,修复很简单:
imshow("acc", acc/255);
关于c++ Opencv accumulateWeighted - 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18748775/
我正在尝试从我的摄像头中获取帧的运行平均值,但几秒后,平均帧的图像变得越来越亮,而不是白色。 我的摄像头提供具有 3 个 channel 的灰度图像。我在 Windows 7、Visualstudio
将 OpenCv 与 C++ 结合使用,我尝试对视频帧执行运行平均以提取前景。但是我无法找出 accumulateWeighted 函数有什么问题。当涉及到该函数时程序停止运行,并给出此错误: Unh
我正在使用 openCV 并尝试计算背景的移动平均值,然后获取当前帧并减去背景以确定移动(某种)。 但是,在运行程序时我得到: OpenCV Error: Assertion failed (func
我有以下代码(尝试端口 this ) VideoCapture sequence = new VideoCapture(fp + "%02d" + ".jpg"); if (!sequ
上下文:这与 "How to build a custom opencv.js with opencv_contrib ?" 有关在一般意义上。 这个问题是一个非常具体的变体:我想使用 accumul
我是一名优秀的程序员,十分优秀!