golang中使用opencv(gocv)将本地摄像头转为ip摄像头

#1、gocv简介
gocv是golang中对opencv库封装。
#2、gocv安装
##2、1下载

go get -u -d gocv.io/x/gocv

##2、2编译

#3、demo


package main

import (
	"fmt"
	"log"
	"net/http"
	_ "net/http/pprof"
	//"github.com/gwuhaolin/livego"
	"github.com/hybridgroup/mjpeg"
	"gocv.io/x/gocv"
)

var (
	deviceID int
	err      error
	webcam   *gocv.VideoCapture
	stream   *mjpeg.Stream
)

func main() {


	// parse args
	deviceID := 0
	host := ":8554"

	// open webcam
	webcam, err = gocv.OpenVideoCapture(deviceID)
	if err != nil {
		fmt.Printf("Error opening capture device: %v\n", deviceID)
		return
	}
	defer webcam.Close()

	// create the mjpeg stream
	stream = mjpeg.NewStream()

	// start capturing
	go mjpegCapture()

	fmt.Println("Capturing. Point your browser to " + host)

	// start http server
	http.Handle("/", stream)
	log.Fatal(http.ListenAndServe(host, nil))
}

func mjpegCapture() {
	img := gocv.NewMat()
	defer img.Close()

	for {
		if ok := webcam.Read(&img); !ok {
			fmt.Printf("Device closed: %v\n", deviceID)
			return
		}
		if img.Empty() {
			continue
		}

		buf, _ := gocv.IMEncode(".jpg", img)
		stream.UpdateJPEG(buf)
	}
}

然后在网页中输入127.0.0.1:8554/
即可访问摄像头

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
GoCV是一个支持Linux、macOS和Windows上最新版本的Go和OpenCVGolang包。它使得Go语言能够与最新的OpenCV生态系统兼容,并成为一个一流的客户端。你可以使用GoCV来进行图像处理和计算机视觉的开发,例如显示图片和视频。你可以使用gocv.IMRead函数来读取图片,并使用gocv.IMShow在窗口显示图片。相应的代码示例如下: ``` package main import ( "fmt" "gocv.io/x/gocv" ) func main() { fmt.Printf("gocv version: %s\n", gocv.Version()) fmt.Printf("opencv lib version: %s\n", gocv.OpenCVVersion()) window := gocv.NewWindow("Hello") img := gocv.IMRead("lena.jpg", gocv.IMReadColor) if img.Empty() { fmt.Printf("Error reading image from: %v\n", "lena.jpg") return } for { window.IMShow(img) if window.WaitKey(1) >= 0 { break } } } ``` 对于显示视频,你可以使用gocv.VideoCaptureDevice函数来打开视频捕获设备,然后使用gocv.VideoCapture的Read方法读取每一帧图像并显示。相应的代码示例如下: ``` package main import ( "fmt" "gocv.io/x/gocv" ) func main() { fmt.Printf("gocv version: %s\n", gocv.Version()) fmt.Printf("opencv lib version: %s\n", gocv.OpenCVVersion()) webcam, err := gocv.VideoCaptureDevice(0) if err != nil { fmt.Printf("Error opening video capture device: %v\n", 0) return } defer webcam.Close() window := gocv.NewWindow("Capture Window") defer window.Close() img := gocv.NewMat() defer img.Close() for { if ok := webcam.Read(&img); !ok { fmt.Printf("Device closed: %v\n", 0) return } if img.Empty() { continue } window.IMShow(img) if window.WaitKey(1) == 27 { break } } } ``` 以上代码示例可以帮助你在Golang使用OpenCV进行图像和视频的处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [gocv-go语言调用opencv入门](https://blog.csdn.net/xinlinhack/article/details/119713374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [使用 Go (Golang) 使用 OpenCV 绘制对象 GoCV](https://blog.csdn.net/woshicver/article/details/128783734)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值