类型错误:不支持的类型 <type 'numpy.ndarray'> [英] TypeError: Unsupported type <type 'numpy.ndarray'>

查看:67
本文介绍了类型错误:不支持的类型 <type 'numpy.ndarray'>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用 cupy 而不是 numpy 在 GPU 中运行部分代码.所以,我只注释掉了这一行 # import numpy as np 并使用这一行而不是它 import cupy as np

I needed to run some parts of the code in GPU using cupy instead of numpy. So, I only made comment out for this line # import numpy as np and used this line instead of it import cupy as np

完整代码:

from imutils.video import VideoStream
from imutils.video import FPS
# import numpy as np
import cupy as np
import argparse
import imutils
import time
import cv2
net = cv2.dnn.readNetFromCaffe('prototxt.txt', 'caffemodel')
vs = cv2.VideoCapture(0)
vs.release()
vs = cv2.VideoCapture(0)
time.sleep(2.0)
fps = FPS().start()
while True:
    ret, frame = vs.read()  # add ret,
    frame = imutils.resize(frame, width=400)
    (h, w) = frame.shape[:2]
    blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)),0.007843, (300, 300), 127.5)
    net.setInput(blob)
    detections = net.forward()
    big_area = 0
    big_center = 320
    detected = 0
    for i in np.arange(0, detections.shape[2]):
        confidence = detections[0, 0, i, 2]
        object_type = int(detections[0, 0, i, 1])
        if object_type == 15 and confidence > 0.2:
            box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
            (startX, startY, endX, endY) = box.astype("int")
            label = "{}: {:.2f}%".format('person', confidence * 100)
            cv2.rectangle(frame, (startX, startY), (endX, endY), [0, 0, 255], 2)
            y = startY - 15 if startY - 15 > 15 else startY + 15
            cv2.putText(frame, label, (startX, y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, [0, 0, 255], 2)
            rect_area = (endX - startX) * (endY - startY)
            detected = 1
            if rect_area > big_area:
                big_area = rect_area
    cv2.imshow("Frame", frame)
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break
vs.release()
cv2.destroyAllWindows()

如何修复这个错误以便使用cupy.

how to fix this error so that use cupy.

/home/redhwan/learn1.py:26: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
  confidence = detections[0, 0, i, 2]
/home/redhwan/learn1.py:27: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
  object_type = int(detections[0, 0, i, 1])
/home/redhwan/learn1.py:29: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
  box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
Traceback (most recent call last):
  File "/home/redhwan/learn1.py", line 29, in <module>
    box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
  File "cupy/core/core.pyx", line 940, in cupy.core.core.ndarray.__mul__
  File "cupy/core/_kernel.pyx", line 811, in cupy.core._kernel.ufunc.__call__
  File "cupy/core/_kernel.pyx", line 89, in cupy.core._kernel._preprocess_args
TypeError: Unsupported type <type 'numpy.ndarray'>

数据这里

请问您有什么想法或建议吗?

please, your ideas or any suggestions?

推荐答案

检测也需要是 Cupy 数组.

The detections need to be a Cupy array too.

detections = np.array(net.forward())

这篇关于类型错误:不支持的类型 &amp;lt;type &amp;#39;numpy.ndarray&amp;#39;&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆