【问题标题】:zsh: illegal hardware instruction mediapipe and openCV errorzsh:非法硬件指令 mediapipe 和 openCV 错误
【发布时间】:2023-02-03 09:42:51
【问题描述】:

我一直遇到这个错误,无法修复。我和很多人谈过,他们不知道该怎么做。我的代码如下。这是非常简单的代码,可以打开我的网络摄像头并显示实时视频。我在 M1 Mac 64 位 Ventura 13.2 上使用 python 3.8.0,使用 VsCode 和最新版本的 openCv、Mediapipe 和 numpy。我尝试过不同的 IDE,但没有成功。

import cv2
import mediapipe as mp
import numpy as np

mp_drawing = mp.solutions.drawing_utils
mp_pose = mp.solutions.pose

#VIDEO FEED
cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    cv2.imshow('Mediapipe Feed', frame)
    
    if cv2.waitKey(10) & 0xFF == ord('q'):
        break
        
cap.release()
cv2.destroyAllWindows()

我第一次运行这段代码时就开始工作了。我运行了几次,然后通过 HDMI 将我的笔记本电脑连接到内置摄像头的电视,然后断开我的笔记本电脑与电视的连接,现在我的代码不起作用。我认为这与无法在我的笔记本电脑上找到相机有关,但我无法弄清楚。任何帮助都会很棒!我尝试将 .VideoCapture() 中的参数从 -10 更改为 10,但仍然没有成功。

【问题讨论】:

  • 请提供更多调试信息。您的示例中似乎没有使用 mediapipe 代码。所以如果你删除这些行会更清楚。在这种情况下,错误消息可能不会包含有关 mediapipe 的任何内容。那么确切的错误信息是什么? cap.isOpened()的结果是什么? ret的结果是什么?
  • 嗨 Markus,是的,对于这段代码,我没有使用 Mediapipe。我应该删除它,抱歉。我收到的错误消息是“zsh:非法硬件指令”,后跟此测试文档在我的计算机上的保存路径。发生的事情是 cap = cv2.VideoCapture(0) 上面的所有代码都运行得很好。当它到达这一行时,计算机发现一个错误并停止程序,并返回那个 zsh 错误。 ret 并且整个 while 循环没有运行,因为计算机没有获取该代码。有什么建议么?感谢您的帮助!!
  • 对不起,我没有使用 Mac。类似问题:stackoverflow.com/q/65383338/18667225

标签: python opencv computer-vision mediapipe


【解决方案1】:

我有冲突的包裹。我通过 homebrew 和 pip3 安装了一堆包。我安装了所有我不使用或不打算使用的东西,这解决了这个问题。 OpenCv 现在可以工作,但我无法为我的 M1 mac 安装 mediapipe 或 mediapipe-silicon。如果我解决了这个问题,我会让所有人都知道。

【讨论】:

  • 这个非法指令问题是通过安装 x86_64 包而不是 ARM 包产生的,即使使用 Rosetta 仿真它也不支持 AVX 指令并且一些软件只是崩溃。一切都喜欢 ARM 二进制文件
【解决方案2】:

这似乎是由带有 macOS 的 M1 CPU 引起的问题。 M1需要compile OpenCV by yourself或者下载别人编译好的OpenCV。 Then the mediapipe 当然可以。欢迎来到 Mx CPU 的世界。

【讨论】:

    猜你喜欢
    • 2022-12-06
    • 2020-10-23
    • 2021-10-26
    • 2021-07-11
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2013-04-29
    相关资源
    最近更新 更多