[RKNN学习记录]香橙派orangepi 5plus python获取HDMI输入视频流

 参考链接:

Ubuntu 20.04搭建OpenCV 4.5.0 & C++环境_ubuntu opencv4.5.0-CSDN博客

How to compile OpenCV with Gstreamer [Ubuntu&Windows] | by Galaktyk 01 | Medium

Releases - OpenCV

香橙派官方镜像自带一个opencv4.5.4的头文件库,可以使用C/C++语言直接调用,奈何本渣渣太菜还不会C++,只能想想办法用python调用了。按照以前玩jetson nano的经验,决定使用opencv的Gstreamer读取。

想要使用gstreamer获取视频流,首先必须确定opencv开启了Gstreamer,一般来说使用pip install opencv-python安装的opencv是不开启Gstreamer的

可以尝试以下代码查看:

import cv2
print(cv2.getBuildInformation())

上图就代表未开启Gstreamer,这种情况下是无法通过cv2.CAP_GSTREAMER直接读取的

cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)

想要开启Gstreamer,就需要从源码进行编译。

预备工作:

 下载依赖库

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

1、下载opencv source

https://github.com/opencv/opencv/archive/4.5.4.zip

2、解压,创建build文件夹,使用Cmake配置

unzip opencv-4.5.4.zip
cd opencv-4.5.4
mkdir build
cd build

Cmake配置如下

cmake \
    -D CMAKE_BUILD_TYPE=RELEASE \                         # 设置构建类型为RELEASE
    -D INSTALL_PYTHON_EXAMPLES=OFF \                      # 不安装Python示例
    -D INSTALL_C_EXAMPLES=OFF \                           # 不安装C示例
    -D BUILD_opencv_python2=OFF \                         # 不构建Python 2支持
    -D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") \  # 设置安装路径为Python的安装路径
    -D PYTHON3_EXECUTABLE=$(which python3) \              # 指定Python 3可执行文件路径
    -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \  # 指定Python 3的包含目录
    -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \  # 指定Python 3的包路径
    -D WITH_GSTREAMER=ON \                                # 开启GStreamer支持
    -D BUILD_EXAMPLES=OFF \                               # 不构建示例
    -D PNG_LIBRARY=/usr/lib/aarch64-linux-gnu/libpng.so \ # 指定PNG库路径
    ..

配置后检查一下自己的配置,路径什么的是否正确,重点是GStreamer一行为YES(下图是截的别人的How to compile OpenCV with Gstreamer [Ubuntu&Windows] | by Galaktyk 01 | Medium

3、开始编译

下面命令是全核一起参与编译,但是在我的香橙派5plus上开全核编译时出现多次系统死机情况,所以我使用的是 make -j4 只开启四个线程编译

make -j$(nproc)

4、安装,更新动态链接库

sudo make install
sudo ldconfig

5、测试

首先卸载python中的opencv-python包

然后直接进入python测试下面代码

import cv2
print(cv2.getBuildInformation())

显示YES则成功。

6、获取HDMI输入测试

import cv2

# GStreamer 管道字符串
pipeline = "v4l2src device=/dev/video0 ! videoconvert ! appsink"

# 创建 VideoCapture 对象
cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)

if not cap.isOpened():
    print("Error: Could not open video stream.")
    exit()

# 读取和显示视频流
while True:
    ret, frame = cap.read()
    if not ret:
        print("Error: Failed to read frame from video stream.")
        break

    cv2.imshow('Video Stream', frame)
    
    key = cv2.waitKey(1)
    if key == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

OK了

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值