视频加载失败

【Golang】使用gocv库编写三帧法

151 字
1 分钟
【Golang】使用gocv库编写三帧法
【Golang】使用gocv库编写三帧法

0x0#

三帧法运动检测属于帧间差分法,相关介绍在之前的文章中有介绍。跳转

这次使用Golang的OpenCV库:gocv 跳转 来编写,是最近为了练手gocv而写的第一个demo

0x1#

package main
import (
"gocv.io/x/gocv"
)
func main() {
c, err := gocv.VideoCaptureFile("1.mp4")
if err != nil {
panic(err)
}
mat := gocv.NewMat()
aMat, bMat := gocv.NewMat(), gocv.NewMat()
ab, bc := gocv.NewMat(), gocv.NewMat()
f := gocv.NewMat()
w, err := gocv.VideoWriterFile("test.mp4", c.CodecString(), c.Get(gocv.VideoCaptureFPS), int(c.Get(gocv.VideoCaptureFrameWidth)), int(c.Get(gocv.VideoCaptureFrameHeight)), false)
for c.Read(&mat) {
//灰度
gocv.CvtColor(mat, &mat, gocv.ColorBGRToGray)
//二值
gocv.Threshold(mat, &mat, 25, 255, gocv.ThresholdBinary)
if bMat.Empty() {
if aMat.Empty() {
mat.CopyTo(&aMat)
} else {
mat.CopyTo(&bMat)
gocv.AbsDiff(aMat, bMat, &ab)
}
continue
}
gocv.AbsDiff(bMat, mat, &bc)
gocv.BitwiseAnd(ab, bc, &f)
w.Write(f)
bc.CopyTo(&ab)
bMat.CopyTo(&aMat)
mat.CopyTo(&bMat)
}
w.Close()
}

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
【Golang】使用gocv库编写三帧法
https://rehtt.com/posts/246/
作者
Rehtt
发布于
2021-08-04
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Rehtt
Hello, I'm Rehtt.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
150
分类
17
标签
73
总字数
67,772
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录