Toybrick

楼主: troy

Rock-X AI组件库1.2.0 SDK发布(C&&Python)

 

troy

版主

积分
2376
 楼主| 发表于 2020-1-16 14:11:07 | 显示全部楼层
chhuang 发表于 2020-1-16 13:45
我跑  python sample code, rockx_finger.py,  但結果不對,請問是甚麼原因

demo里面跑的检测食指2个点的,如果想检测全部的手部点,可以用这份代码。
  1. import math
  2. import time
  3. import argparse

  4. from rockx import RockX
  5. import cv2

  6. if __name__ == '__main__':
  7.     # 参数解析
  8.     parser = argparse.ArgumentParser(description="RockX Finger Demo")
  9.     parser.add_argument('-c', '--camera', help="camera index", type=int, default=0)
  10.     parser.add_argument('-d', '--device', help="target device id", type=str)
  11.     args = parser.parse_args()

  12.     # 创建RockX手指关键点句柄
  13.     pose_finger_handle = RockX(RockX.ROCKX_MODULE_POSE_FINGER_21, target_device=args.device)

  14.     # 从摄像头获取1280x720的图像
  15.     cap = cv2.VideoCapture(args.camera)
  16.     cap.set(3, 1280)
  17.     cap.set(4, 720)
  18.     last_face_feature = None

  19.     while True:
  20.         # 按帧读取图像
  21.         ret, frame = cap.read()

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

  23.         # 使用RockX进行手指关键点识别
  24.         ret, result = pose_finger_handle.rockx_pose_finger(frame, in_img_w, in_img_h, RockX.ROCKX_PIXEL_FORMAT_BGR888)
  25.         # 在图像上绘制关键点
  26.         for p in result.points:
  27.             cv2.circle(frame, (p.x, p.y), 3, (0, 255, 0), 3)
  28.         # 使用线条连接对应的关键点
  29.         for pairs in RockX.ROCKX_POSE_FINGER_21_KEYPOINTS_PAIRS:
  30.             pt1 = result.points[pairs[0]]
  31.             pt2 = result.points[pairs[1]]
  32.             if pt1.x <= 0 or pt1.y <= 0 or pt2.x <= 0 or pt2.y <= 0:
  33.                 continue
  34.             cv2.line(frame, (pt1.x, pt1.y), (pt2.x, pt2.y), (255, 0, 0), 2)

  35.         # 显示结果图像
  36.         cv2.imshow('RockX Finger - ' + str(args.device), frame)
  37.         # 按下'q'键退出
  38.         if cv2.waitKey(1) & 0xFF == ord('q'):
  39.             break

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

  43.     pose_finger_handle.release()
复制代码
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-1-19 11:00:53 | 显示全部楼层
本帖最后由 jwseey2019 于 2020-1-19 11:06 编辑
troy 发表于 2020-1-9 14:16
是在什么环境下跑,驱动是否已经更新到最新

刚送给商家升级成最新的sdk和驱动,是在ubuntu的18.04环境的上位机上运行的人脸分析的python的sample
D RKNNAPI: ==============================================
D RKNNAPI: RKNN VERSION:
D RKNNAPI:   API: 1.2.0 (1190a71 build: 2019-09-25 12:39:14)
D RKNNAPI:   DRV: 1.3.0 (c4f8c23 build: 2019-11-25 10:39:29)
D RKNNAPI: ==============================================

sample从来没跑完过,很容易就出现E NPUTransfer: Please open transfer first!
E RKNNAPI: rknn_input_set,  send(MsgInput 0) fail, -4(ERROR_NO_DEVICE) != 271143!
1578034033184 rockx set_inputs(105): rknn_inputs_set error -3
1578034033184 rockx run(143): set_inputs error -1
1578034033184 rockx rockx_carplate_detect(27): run error -1


因为我只有一个1808的计算棒,所以我没有指定device,只指定了一个视频文件给他。
python3 rockx_face_analyze.py -c data/3.mp4这样运行的


回复

使用道具 举报

troy

版主

积分
2376
 楼主| 发表于 2020-1-19 14:36:31 | 显示全部楼层
jwseey2019 发表于 2020-1-19 11:00
刚送给商家升级成最新的sdk和驱动,是在ubuntu的18.04环境的上位机上运行的人脸分析的python的sample
D RK ...

这个demo不支持你写的这种用法,你可以看到里面-c指定的参数类型是int,你可以直接修改代码再测试一下。
parser.add_argument('-c', '--camera', help="camera index", type=int, default=0)。
你可以把video的初始化改掉,cap = cv2.VideoCapture("data/3.mp4")试试。
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-1-19 14:40:16 | 显示全部楼层
troy 发表于 2020-1-19 14:36
这个demo不支持你写的这种用法,你可以看到里面-c指定的参数类型是int,你可以直接修改代码再测试一下。
...

是的,忘记说了,我把parser.add_argument('-c', '--camera', help="camera index", type=int, default=0)。改成了parser.add_argument('-c', '--camera', help="camera index", type=str)。就可以这样用了
我能运行起来的,就是老出现上面的错误
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-1-20 10:02:04 | 显示全部楼层
troy 发表于 2020-1-19 14:36
这个demo不支持你写的这种用法,你可以看到里面-c指定的参数类型是int,你可以直接修改代码再测试一下。
...

从log能看出是什么原因吗,怎么排查呢
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-1-20 11:01:31 | 显示全部楼层
troy 发表于 2020-1-19 14:36
这个demo不支持你写的这种用法,你可以看到里面-c指定的参数类型是int,你可以直接修改代码再测试一下。
...

找到原因了,前置usb的问题,插在后边的usb就没问题了。
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-1-20 11:07:30 | 显示全部楼层
troy 发表于 2020-1-19 14:36
这个demo不支持你写的这种用法,你可以看到里面-c指定的参数类型是int,你可以直接修改代码再测试一下。
...

另外请教一个问题,rockx_face_recog.py这个里面的imagedir下的image去哪弄呢,具体什么样式的图片比较好?
回复

使用道具 举报

troy

版主

积分
2376
 楼主| 发表于 2020-1-20 16:33:30 | 显示全部楼层
jwseey2019 发表于 2020-1-20 11:07
另外请教一个问题,rockx_face_recog.py这个里面的imagedir下的image去哪弄呢,具体什么样式的图片比较好 ...

RockX SDK文档里面有说明如何使用。Rockchip_Developer_Guide_RockX_SDK_CN.pdf
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-1-21 14:14:16 | 显示全部楼层
本帖最后由 jwseey2019 于 2020-1-21 14:18 编辑
troy 发表于 2020-1-20 16:33
RockX SDK文档里面有说明如何使用。Rockchip_Developer_Guide_RockX_SDK_CN.pdf

是否正面人脸就可以了?
我这边每次都死在
et, face_feature = face_recog_handle.rockx_face_recognize(align_img)这一句调用里
Segmentation fault

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

troy

版主

积分
2376
 楼主| 发表于 2020-2-1 19:55:33 | 显示全部楼层
jwseey2019 发表于 2020-1-21 14:14
是否正面人脸就可以了?
我这边每次都死在
et, face_feature = face_recog_handle.rockx_face_recognize(a ...

正面人脸即可,比如你想识别两个人,那可以拍两张人脸,AAA.jpg和BBB.jpg。按照说明打包成数据库,即可识别AAA和BBB两个人。当摄像头拍到的画面中有AAA,则会显示AAA,和AAA的图像。
我们测试没有碰到该问题,检查下流程还有数据库打包有没有问题。
回复

使用道具 举报

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

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表