gocv读取gif多帧图像,mp4视频图像,opencv,VideoCaptureFile,opencv_ffmpeg

这篇具有很好参考价值的文章主要介绍了gocv读取gif多帧图像,mp4视频图像,opencv,VideoCaptureFile,opencv_ffmpeg。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读取GIF图像

opencv中无法读取gif图像,这是由于license原因。转而使用 videocapture 或者第三方的 PIL 库(Python),但是其实Golang的基础库image中就有读取gif图像的。于是一个简单的示例如下

func ReadAndShowGIF(filename string) {
	w := gocv.NewWindow(filename)

	f, _ := os.Open(filename)
	defer f.Close()

	gi, _ := gif.DecodeAll(f)

	for k, v := range gi.Image {
		img, err := gocv.ImageToMatRGB(v)
		if err != nil {
			log.Fatal(err)
		}

		w.IMShow(img)
		w.WaitKey(gi.Delay[k] * 10) // delay 单位是百分之一秒,waitkey参数为毫秒
	}

	w.WaitKey(0)
}

这里只会播放一遍gif图像,我们还可以解析gif中的LoopCount来增加循环播放的逻辑。

读取mp4视频文件

首先要确保cmake安装的时候成功安装了opencv_ffmpeg_64.dll and opencv_ffmpeg.dll依赖,否则在调用gocv.VideoCaptureFile或者gocv.OpenVideoCapture的时候会报错Error opening file: showimage/video1.mp4

打开opencv编译安装的路径下C:\opencv\build\lib,的确没找到这两依赖,那怎么办呢?

opencv在编译的时候会首先查找当前系统有没有安装ffmpeg,如果没有安装才会去下载安装,但是可能是在下载的时候失败了,所以就没有安装这个依赖,下载失败的日志可以在opencv/build/CMakeDownloadLog.txt找到,因此,我们打开梯子软件,然后重新编译opencv。

读取视频文件使用gocv.VideoCaptureFile(filename)或者gocv.OpenVideoCapture(filename),然后逐帧处理

func ReadAndShowVideo(filename string) {
	w := gocv.NewWindow(filename)
	vc, err := gocv.VideoCaptureFile(filename)
	if err != nil {
		fmt.Println(err)
		return
	}

	mat := gocv.NewMat()

	for {
		if vc.Read(&mat) {
			w.IMShow(mat)
			w.WaitKey(10)
		} else {
			break
		}
	}
	w.WaitKey(0)
}

其实也可以使用ReadAndShowVideo函数来读取GIF图像,但是不如ReadAndShowGIF控制的更细致。文章来源地址https://www.toymoban.com/news/detail-518248.html

到了这里,关于gocv读取gif多帧图像,mp4视频图像,opencv,VideoCaptureFile,opencv_ffmpeg的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包