golang 摄像头截图gocv版本

122 阅读1分钟

依赖 gocv.io/x/gocv 开源库

开源库使用cgo调度opencv处理视频流相关

gocv安装参考官网 gocv.io/getting-sta…

package main
 
import (
	"fmt"
	"gocv.io/x/gocv"
	"image/jpeg"
	"os"
)
 
 
func main() {
	video, err := gocv.OpenVideoCapture("rtsp://root:123456@127.0.0.1")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer video.Close()
 
	img := gocv.NewMat()
	defer img.Close()
 
	classifier := gocv.NewCascadeClassifier()
	defer classifier.Close()
	for {
		if ok := video.Read(&img); !ok {
			return
		}
		
		if img.Empty() {
			return
		}
 
		data, err := img.ToImage()
		if err != nil {
			fmt.Println("to img err:", err)
			return
		}
 
		file, err := os.Create("./test.jpg")
		if err != nil {
			return
		}
		defer file.Close()
 
		if err = jpeg.Encode(file, data, nil); err != nil {
			fmt.Println("jpeg err:", err)
		} else {
			fmt.Println("success")
		}
 
		return
 
	}
}