为了方便调试,这里采用mjpg-streamer实现实时视频流获取并进行远程图像处理操作。可以实现在PC机上调试嵌入式端的图像处理,并实时查看效果。
运行环境
- 树莓派4B Buster
- Jetson Nano
安装必要依赖包和软件
(1)树莓派
- 依赖包
sudo apt-get install subversion libv4l-dev libjpeg62-dev imagemagick libjpeg62-dev libjpeg8-dev
(2)Jetson
sudo apt-get install libjpeg8-dev libv4l-dev
下载mjpg-streamer包
git clone https://github.com.cnpmjs.org/jacksonliam/mjpg-streamer
编译安装
- 进入
mjpg-streamer/mjpg-streamer
文件夹
cd mjpg-streamer/mjpg-streamer-experimental
- make编译
make
sudo make install
运行
./start.sh
将一条运行指令写入start.sh
:
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -f 30 -r 1280x720" -o "./output_http.so -w ./www"
- 访问网页视频流
http://localhost:8080/
获取mjpg-streamer的视频帧并进行图像处理
# -*- coding:utf-8 -*-
import cv2
import numpy as np
from urllib import request
url = "http://localhost:8080/?action=snapshot"
def downloadImg():
global url
with request.urlopen(url) as f:
data = f.read()
img1 = np.frombuffer(data, np.uint8)
#print("img1 shape ", img1.shape) # (83653,)
img_cv = cv2.imdecode(img1, cv2.IMREAD_ANYCOLOR)
return img_cv
while True:
# image = downloadImg()
image = downloadImg() #cv2.imread('1.jpg') # 根据路径读取一张图片
cv2.imshow("frame", image)
dst = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # BGR转HSV
cv2.imshow('output', dst)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
- 原画面
- 实时获取opencv处理后