昇腾开发板FAQ

George

25-05-22

24-09-16

| 浏览量:👀  |  返回 <主页>

开发者套件连接的显示器不显示

问题现象:

解决方案:



使用手机摄像头

电脑转发(iPhone)

主要设备:mac笔记本,iPhone 手机,昇腾开发板

方案概述:
1、用 Mac笔记本自带的 QuickTime Player 获取 iPhone 手机的摄像头视频流。
2、在 Mac笔记本上运行 ffmpeg,将 iPhone 手机的摄像头视频流,推送到昇腾开发板上。
3、在昇腾开发板上接收 iPhone 手机的摄像头视频流,并推理。

主要步骤如下:

1、连接相关设备。
(1)用苹果数据线,将 iPhone 手机连接到 Mac 笔记本。
(2)用网线,连接 Mac笔记本和昇腾开发板。网线插在昇腾开发板上下排列的2个网口的上面那个网口,昇腾开发板的 IP地址则固定为 192.168.137.100。

2、在 Mac 笔记本上,运行系统自带的 QuickTime Player。

3、在 QuickTime Player 界面上,选择 File | New Movie Recording。将弹出界面,画面为 iPhone 摄像头拍摄到的视频画面。

4、在 Mac笔记上启动 Terminal 应用,并在 Terminal 窗口中执行 ffmpeg -f avfoundation -list_devices true -i "",列出有哪些音视频设备。ffmpeg 如不存在,则需要自行安装。如何安装 ffmpeg 可自行搜索指南,此处从略。
如下显示的 George’s iPhone14 Camera,就是要使用的 iPhone 摄像头名称。


~ % ffmpeg -f avfoundation -list_devices true -i ""
...
[AVFoundation indev @ 0x7fb407804580] AVFoundation video devices:
[AVFoundation indev @ 0x7fb407804580] [0] FaceTime HD Camera (Built-in)
[AVFoundation indev @ 0x7fb407804580] [1] George’s iPhone14 Camera
[AVFoundation indev @ 0x7fb407804580] [2] Capture screen 0
[AVFoundation indev @ 0x7fb407804580] AVFoundation audio devices:
[AVFoundation indev @ 0x7fb407804580] [0] Built-in Microphone
[AVFoundation indev @ 0x7fb407804580] [1] screen-record-input
[AVFoundation indev @ 0x7fb407804580] [2] BlackHole 2ch
[AVFoundation indev @ 0x7fb407804580] [3] George’s iPhone14 Microphone
[AVFoundation indev @ 0x7fb407804580] [4] BlackHole 64ch
...
                

5、在 Mac 笔记本的 Terminal 界面中,执行 ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -pix_fmt uyvy422 -i "George’s iPhone14 Camera" -preset ultrafast -b:v 2M -f mpegts udp://192.168.137.100:1234

6、在昇腾开发板启动 jupyter notebook,然后在本机浏览器窗口中,修改 /01-yolov5/main.ipynb,增加对手机摄像头视频流的推理。

6.1 复制 infer_camera 函数,约 25行(含空行)
6.2 粘贴。把函数名 infer_camera 改成 infer_phone_camera
6.3 注释掉以下2行。在行首输入 #;或者选中2行,按 CTRL + / 键(CTRL 和 / 同时按下)。


    # camera_index = find_camera_index()
    # cap = cv2.VideoCapture(camera_index)
                

6.4 在注释掉的2行下面,插入以下4行

    cap = cv2.VideoCapture("udp://127.0.0.1:1234", cv2.CAP_FFMPEG)
    if not cap.isOpened():
        print("无法打开手机视频流。")
    else:
    

6.5 选中函数的余下部分,从 # 初始化可视化对象到结束,按 CTRL + ] 键缩进。


新增的 infer_phone_camera 如下:

def infer_phone_camera(model, labels_dict, cfg):
    """外设手机摄像头实时推理"""


    # 获取摄像头
    # camera_index = find_camera_index()
    # cap = cv2.VideoCapture(camera_index)
    cap = cv2.VideoCapture("udp://127.0.0.1:1234", cv2.CAP_FFMPEG)
    if not cap.isOpened():
        print("无法打开手机视频流。")
    else:
        # 初始化可视化对象
        image_widget = widgets.Image(format='jpeg', width=1280, height=720)
        display(image_widget)
        while True:
            # 对摄像头每一帧进行推理和可视化
            _, img_frame = cap.read()
            image_pred = infer_frame_with_vis(img_frame, model, labels_dict, cfg)
            image_widget.value = img2bytes(image_pred)
    

6.6 复制

    elif infer_mode == 'camera':
        infer_camera(model, labels_dict, cfg)
    
粘贴后改成:

    elif infer_mode == 'phone':
        infer_phone_camera(model, labels_dict, cfg)
    
然后修改

    infer_mode = 'phone'
    
执行样例程序,就可以看到结果。


电脑转发(安卓)

1、打开开发者模式。进入 [设置 | 关于手机],在 [版本] 处点击数次,会出现提示“您正处于开发者模式”。

2、设置 [开发者选项]
2.1 进入 [系统和更新 | 开发者选项]
2.2 打开 [USB调试]
2.3 设置 [选择USB配置] 为 [MTP(多媒体传输)] 2.4 通过数据线,将安卓手机和 Windows 电脑连接。

3、下载 scrcpy-win64-v3.2.zip,解压后放到本地 windows 电脑的目录中。

4、下载 ffmpeg-2025-05-19-git-c55d65ac0a-full_build.7z,解压后放到本地 windows 电脑的目录中。

5、启动一个终端(CMD或powershell),转到 scrcpy 所在目录,执行 .\scrcpy --no-audio --max-fps 30 --video-bit-rate 2M
5.1 顺利的话,Windows 电脑上将出现手机界面。
5.2 如果提示找不到设备,则重复上述第2步。然后在 scrcpy 所在目录中,执行 .\adb devices,看看是否招到设备了。

6、再启一个终端,转到 ffmpeg\bin 所在目录,执行.\ffmpeg -f gdigrab -i title="tas-an00" -preset ultrafast -f mpegts udp://192.168.137.100:1234

- title="tas-an00"要修改,改成你电脑上手机界面的窗口名称。比如执行 scrcpy 命令后,你电脑上出现的手机界面窗口的名称是 redmi ,则title="redmi"。
- 如果把 ffmpeg\bin 目录加入了环境变量PATH中,则在任意目录执行即可,ffmpeg 前面也不用加 .\

7、修改样例程序,可参考 使用 iPhone 摄像头第6步

通用(IP摄像头)

【简介】将手机作为视频服务器。开发板从手机(视频服务器)上拉流,从而得到手机的视频画面。要组成局域网,开发板要能连通手机(视频服务器)的IP地址。

1、手机下载安装“IP摄像头”(IP Camera) App(作者:沈垚yao)

1.1 安卓:https://www.downxia.com/downinfo/196291.html
1.2 iPhone:App Store 搜索 IP Camera

2、运行 IP摄像头 App,进入设置页面设置[用户名][密码]

2.1 安卓:点击首页右上角[齿轮],可进入设置界面。
2.2 iPhone:点击有野右上角[三条横线],再点击[设置],可进入设置页面。

3、设置完成后回App首页,点击底部 [打开IP摄像头服务器],并打开[RTSP服务器]

3.1 安卓:在界面上勾选 [RTSP]
3.2 iPhone:点击底部齿轮,再点击[RTSP服务器]

4、设置视频画面分辨率为 640 x 480(这样,开发板使用该视频时相对比较流畅)

4.1 找一个和手机(IP摄像头服务器)在同一个局域网的手机或电脑,打开浏览器,输入手机(IP摄像头服务器)界面上显示的 http网址,比如 http://192.168.43.132:8081/。如需要输入用户名和密码,请输入第2步中设置的用户名和密码。
4.2 浏览器会出现手机画面。点击画面右小角[分辨率],选择 640 x 480

5、在开发板上 ping 手机(IP摄像头服务器)的地址,如果能 ping 通,则进入下一步。比如 ping 192.168.43.132

6、在昇腾开发板启动 jupyter notebook,然后在本机浏览器窗口中,修改 /01-yolov5/main.ipynb

以下是修改后的 infer_phone_camera,供参考。

url = 'rtsp://gdv2:Lily093897@192.168.43.132:8554/live'中,要替换为你自己的用户名:密码@IP地址:(RTSP)端口号


def infer_phone_camera(model, labels_dict, cfg):
    """外设手机摄像头实时推理"""


    # 获取摄像头
    # camera_index = find_camera_index()
    # cap = cv2.VideoCapture(camera_index)
    url = 'rtsp://gdv2:Lily093897@192.168.43.132:8554/live'
    cap = cv2.VideoCapture(url)
    if not cap.isOpened():
        print("无法打开手机视频流。")
    else:
        # 初始化可视化对象
        image_widget = widgets.Image(format='jpeg', width=640, height=480)
        display(image_widget)
        while True:
            # 对摄像头每一帧进行推理和可视化
            _, img_frame = cap.read()
            image_pred = infer_frame_with_vis(img_frame, model, labels_dict, cfg)
            image_widget.value = img2bytes(image_pred)



驱动机械臂报 xxx I2C error

问题现象:

解决过程:

解决方案: