Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

[人工智能] RK3399pro Rock-X python代码+USB摄像头目标检测报错

122

积分

0

威望

0

贡献

技术小白

积分
122

RK3399pro Rock-X python代码+USB摄像头目标检测报错

发表于 2023-4-25 09:20:31      浏览:5131 | 回复:13        打印      只看该作者   [复制链接] 楼主
问题描述及复现步骤:
本帖最后由 KevinWu 于 2023-4-25 09:20 编辑

平台:Ubuntu 20.04 + 2GB内存 +1GB NPU

问题1:按照Rockchip_Developer_Guide_RockX_SDK_CN 文档,接入USB摄像头后,运行以下命令
  1. python3 -m rockx.test.camera.rockx_object_detection
复制代码
  1. python3 -m rockx_object_detection.py
复制代码
报以下错误:内存不够
  1. Traceback (most recent call last):
  2.   File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
  3.     return _run_code(code, main_globals, None,
  4.   File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
  5.     exec(code, run_globals)
  6.   File "/home/firefly/.local/lib/python3.8/site-packages/rockx/test/camera/rockx_object_detection.pine 12, in <module>
  7.     object_det_handle = RockX(RockX.ROCKX_MODULE_OBJECT_DETECTION, target_device=args.device)
  8.   File "/home/firefly/.local/lib/python3.8/site-packages/rockx/RockX.py", line 235, in __init__
  9.     self.rockx_base = RockXBase()
  10.   File "/home/firefly/.local/lib/python3.8/site-packages/rockx/RockXBase.py", line 218, in __init__
  11.     RockXBase._load_library()
  12.   File "/home/firefly/.local/lib/python3.8/site-packages/rockx/RockXBase.py", line 448, in _load_li
  13.     RockXBase.lib = CDLL(os.path.join(lib_dir, 'librockx.so'))
  14.   File "/usr/lib/python3.8/ctypes/__init__.py", line 373, in __init__
  15.     self._handle = _dlopen(self._name, mode)
  16. OSError: /home/firefly/.local/lib/python3.8/site-packages/rockx/sdk/rockx-rk3399pro-Linux/lib64/lib.so: cannot allocate memory in static TLS block
复制代码


问题2:通过chat-gpt搜索了解决答案,用sudo权限运行

  1. sudo python3 -m rockx.test.camera.rockx_object_detection
复制代码
  1. sudo python3 -m rockx_object_detection.py
复制代码
报以下错误:
ModuleNotFoundError: No module named 'rockx'




3.参考文档和代码

  1. import argparse
  2. from rockx import RockX
  3. import cv2

  4. if __name__ == '__main__':

  5.     parser = argparse.ArgumentParser(description="RockX Object Detection Demo")
  6.     parser.add_argument('-c', '--camera', help="camera index", type=int, default=0)
  7.     parser.add_argument('-d', '--device', help="target device id", type=str)
  8.     args = parser.parse_args()

  9.     object_det_handle = RockX(RockX.ROCKX_MODULE_OBJECT_DETECTION, target_device=args.device)

  10.     cap = cv2.VideoCapture(args.camera)
  11.     cap.set(3, 1280)
  12.     cap.set(4, 720)
  13.     last_face_feature = None

  14.     while True:
  15.         # Capture frame-by-frame
  16.         ret, frame = cap.read()

  17.         in_img_h, in_img_w = frame.shape[:2]

  18.         ret, results = object_det_handle.rockx_face_detect(frame, in_img_w, in_img_h, RockX.ROCKX_PIXEL_FORMAT_BGR888)

  19.         for result in results:
  20.             cv2.rectangle(frame,
  21.                           (result.box.left, result.box.top),
  22.                           (result.box.right, result.box.bottom),
  23.                           (0, 255, 0), 2)
  24.             cv2.putText(frame, "%s" % RockX.ROCKX_OBJECT_DETECTION_LABELS_91[result.cls_idx],
  25.                         (result.box.left, result.box.top - 10),
  26.                         cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0))

  27.         # Display the resulting frame
  28.         cv2.imshow('RockX Object Detection - ' + str(args.device), frame)
  29.         if cv2.waitKey(1) & 0xFF == ord('q'):
  30.             break

  31.     # When everything done, release the capture
  32.     cap.release()
  33.     cv2.destroyAllWindows()

  34.     object_det_handle.release()
复制代码




Rockchip_Developer_Guide_RockX_SDK_CN.pdf

805.65 KB, 下载次数: 0, 下载积分: 灯泡 -1 , 经验 -1

log_result.zip

1.51 KB, 下载次数: 0, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

415

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
415
发表于 2023-4-25 14:35:35        只看该作者  沙发
你好,先确认一下有没有安装rknn相关包。
回复

使用道具 举报

122

积分

0

威望

0

贡献

技术小白

积分
122
发表于 2023-4-25 14:44:11        只看该作者  板凳
本帖最后由 KevinWu 于 2023-4-25 14:45 编辑

我确实也是按照他们的文档操作,安装对应的包【RockX-1.4.4-py3-none-any.whl】,好像也不行


我在终端输入Python3,然后输入 from rockx import RockX 是没问题的 ;在线求助
   


回复

使用道具 举报

122

积分

0

威望

0

贡献

技术小白

积分
122
发表于 2023-4-25 14:52:15        只看该作者  地板
neutionwei 发表于 2023-4-25 14:35
你好,先确认一下有没有安装rknn相关包。

我之前有用你们的demo 来做单张图片推理,是可以的,你可以看看我楼下的评论
回复

使用道具 举报

122

积分

0

威望

0

贡献

技术小白

积分
122
发表于 2023-4-25 15:01:06        只看该作者  5#
本帖最后由 KevinWu 于 2023-4-25 15:06 编辑

我之前有用官方提供的demo
Rock-X/RockX_SDK_V1.4.4_20210623/demo/command_line_demo/rockx_object_detection_demo/rockx_object_detection.cpp来做单张图片推理,是有安装RKNN 驱动,驱动版本是1.7.1, 麻烦你帮我确认一下,感谢!
回复

使用道具 举报

415

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
415
发表于 2023-4-25 15:17:18        只看该作者  6#
之前OK的系统版本与现在的是一样嘛?
回复

使用道具 举报

122

积分

0

威望

0

贡献

技术小白

积分
122
发表于 2023-4-25 15:29:28        只看该作者  7#
neutionwei 发表于 2023-4-25 15:17
之前OK的系统版本与现在的是一样嘛?

是的,一样的主板RK3399 PRO  (2GB内存+1GB NPU),环境也是一样的
回复

使用道具 举报

1万

积分

14

威望

13

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
11138

优秀版主

发表于 2023-4-25 17:20:58        只看该作者  8#
你的 rockx 是装在哪个用户上的,一时sudo 一时普通用户的,我看你的普通 python3 调试器都可以 import rockx 了
回复

使用道具 举报

415

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
415
发表于 2023-4-25 17:24:03        只看该作者  9#
环境一样,按道理是没问题的,你看看是不是哪里改动了。
回复

使用道具 举报

122

积分

0

威望

0

贡献

技术小白

积分
122
发表于 2023-4-25 17:37:31        只看该作者  10#
板蓝根 发表于 2023-4-25 17:20
你的 rockx 是装在哪个用户上的,一时sudo 一时普通用户的,我看你的普通 python3 调试器都可以 import roc ...

我一直都是在firefly 用户操作,之前也是按照操作指示Opencv 编译和安装编译成功了opencv 3.4.15,然后接入USB摄像头是正常的,现在就是想用python代码来进行目标检测,一开始执行命令,说内存不够,无法正常运行,后面就是sudo权限可以执行,但是就是没有RockX模块。我等会尝试一下创建python3.7虚拟环境再测试,感谢指示
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表