You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV手部追踪报错:输入图像深度不支持CV_64F 转float32仍触发错误

MediaPipe手部追踪报错解决方案

报错根因梳理

  • 第一个Unsupported depth of input image报错:MediaPipe的hands.process()仅支持数据类型为uint8或float32的输入图像,你当前传入的图像为CV_64F(即64位浮点型)不符合要求,同时颜色空间转换参数使用错误,默认摄像头读取的图像为BGR3通道格式,不是BGRA4通道格式。
  • 第二个布尔类型无astype方法报错:cap.read()返回的第一个参数是读取成功标识success,如果读取失败img会返回布尔类型的False,直接传入处理函数就会触发该报错,同时你未对handDetector类进行实例化,直接赋值类对象调用方法也会导致参数异常。

修复步骤

  1. 修正handDetector类的实例化写法,加上括号创建实例
  2. 每次读取摄像头帧后先判断success是否为True,读取失败直接跳过当前循环
  3. 修正颜色空间转换参数为cv2.COLOR_BGR2RGB,如果确认你的输入是4通道BGRA格式再用原参数
  4. 转换图像数据类型为uint8,适配MediaPipe的输入要求

注意:如果使用较新版本的MediaPipe(0.8.10及以上),Hands类初始化需要显式指定参数名避免顺序错误,可调整初始化代码:

self.hands = self.mpHands.Hands(
    static_image_mode=self.mode,
    max_num_hands=self.maxHands,
    min_detection_confidence=self.detectCon,
    min_tracking_confidence=self.trCon
)

修复后核心代码片段

def findHands(self, img, draw = True):
    # 确保图像为uint8类型适配MediaPipe输入要求
    img = img.astype('uint8')
    # 修正颜色空间转换参数
    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    results = self.hands.process(imgRGB)
    if results.multi_hand_landmarks:
        for handL in results.multi_hand_landmarks:
            if draw:
                self.mpDraw.draw_landmarks(img, handL, self.mpHands.HAND_CONNECTIONS)
    return img


def main():
    cap = cv2.VideoCapture(0)
    pTime = 0
    cTime = 0
    # 修正:实例化handDetector类
    detector = handDetector()
    while True:
        success, img = cap.read()
        # 新增:判断帧读取是否成功,避免传入布尔值报错
        if not success:
            continue
        img = detector.findHands(img, True)
        cTime = time.time()
        fps = 1 / (cTime - pTime)
        pTime = cTime
        cv2.putText(img, str(int(fps)), (10, 70),
        cv2.FONT_HERSHEY_PLAIN, 3, (60, 50, 255), 3)
        cv2.imshow("Image", img)
        Q = cv2.waitKey(33)
        if(Q)==27:
           break
    # 新增:释放资源避免内存残留
    cap.release()
    cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者SilentH11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:45:02