ubuntu系统开机自启动摄像头在屏幕上显示实时图像

编写摄像头实时显示代码

sudo vim camera_display.py

弹框显示

import cv2

def show_camera():
    # 打开 USB 摄像头(根据需要更改索引)
    cap = cv2.VideoCapture(0)
    # 设置分辨率
    width = 320
    height = 240
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)

    while True:
        # 从摄像头读取一帧
        ret, frame = cap.read()
        # 显示帧
        cv2.imshow('USB Camera', frame)
        # 如果按下 'q' 键,则退出循环
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # 释放摄像头并关闭 OpenCV 窗口
    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    show_camera()

全屏显示

需要先安装pyautogui

pip3 install pyautogui
import cv2
import pyautogui

def show_camera():
    # Open the USB camera (change 0 to the appropriate camera index if needed)
    cap = cv2.VideoCapture(0)
    # 设置分辨率
    width = 640
    height = 480
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
    cv2.namedWindow('USB Camera', cv2.WND_PROP_FULLSCREEN)
    cv2.setWindowProperty('USB Camera', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

    while True:
        # Read a frame from the camera
        ret, frame = cap.read()

        screen_width, screen_height = pyautogui.size()
        frame = cv2.resize(frame, (screen_width, screen_height))
        
        
        # Display the frame in a window
        cv2.imshow('USB Camera', frame)
        cv2.setMouseCallback('USB Camera', lambda *args: None)

        # Break the loop if 'q' key is pressed
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # Release the camera
    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    show_camera()

测试代码

python3 camera_display.py

弹框方式的代码在本地或SSH远程连中都可以运行,全屏方式的代码要在本地运行

编写一个开机自启动服务

在/etc/systemd/system/创建一个服务脚本

cd /etc/systemd/system/
sudo vim camera_display.service

脚本内容:

[Unit]
Description=USB Camera Display Service
After=network.target

[Service]
ExecStartPre=/bin/sleep 1
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/jetson/.Xauthority"
ExecStart=/usr/bin/python3 /home/jetson/camera_display.py
WorkingDirectory=/home/jetson
Restart=always
User=jetson

[Install]
WantedBy=default.target

测试一下服务脚本,看看能不能运行,效果有没有达到预期

sudo systemctl restart camera_display.service

如果没有显示,可以查看一下服务的状态,看看在哪个点出错

sudo systemctl status camera_display.service

使能并重载服务

前面步骤都没有问题后,全能服务,重载所有服务,搞定

sudo systemctl enable camera_display.service
sudo systemctl daemon-reload

到此就大功告成了,可以重启看看成果了

sudo reboot

猜你喜欢

转载自blog.csdn.net/qq_18677445/article/details/135022614