c语言帧检测,c – 在OpenCV 2.4.9中检测坏帧

在第一种方法中我想到的是通过计算不同的像素来检查有效帧的示例与我们正在检查的示例之间的不相似性.将这个数除以面积,我们得到衡量不相似度的百分比.我猜大于0.5,我们可以说测试帧是无效的,因为它与有效帧的例子有很大不同.

这个假设只适用于你有一个静态相机(它不移动),并且可以在它前面移动的物体不在最短距离内(取决于焦距,但如果你有例如宽镜头那么物体不应该在相机前方出现不到30厘米,以防止物体从不知名的地方“跳入”框架并且其尺寸大于框架区域的50%).

在这里你有opencv功能,它做我说的.实际上,如果您认为运动变化会更快,您可以将相似系数调整得更大.请注意,第一个参数应该是有效帧的示例.

bool IsBadFrame(const cv::Mat &goodFrame, const cv::Mat &nextFrame) {

// assert(goodFrame.size() == nextFrame.size())

cv::Mat g, g2;

cv::cvtColor(goodFrame, g, CV_BGR2GRAY);

cv::cvtColor(nextFrame, g2, CV_BGR2GRAY);

cv::Mat diff = g2 != g;

float similarity = (float)cv::countNonZero(diff) / (goodFrame.size().height * goodFrame.size().width);

return similarity > 0.5f;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值