我的计算机上有一个python3脚本,可以用python3 motion_detection.py
运行,并且可以正常工作,我试图在Raspberry上使用它,但消息Illegal instruction
失败。引发此错误的行是:frame = imutils.resize(frame, width=500)
这是最小的代码示例:
import imutils
import cv2
frame = cv2.imread('test.jpg')
frame = imutils.resize(frame, width=500)
我确定该框架不是“无”,因为我尝试保存它并且它起作用了。
我有点困惑,因为没有更多的解释Illegal instruction
我检查了计算机上与Raspberry(0.4.6)上的版本相同的imutils
答案 0 :(得分:1)
尝试将行frame = imutils.resize(frame, width=500)
更改为frame = imutils.resize(frame, width=500, inter=cv2.INTER_NEAREST)
。这样行吗?
使用某些特定插值方法的大小调整的imutils实现似乎是一个问题。默认插值方法指定为INTER_LINEAR
,会在RPi零位上引起Illegal instruction
错误。但是,如果您将默认值覆盖为非问题插值方法,则可能会起作用!我测试了每个选项,发现以下每个插值方法都可以在我的RPi Zero上成功运行:INTER_NEAREST, INTER_CUBIC, INTER_LANCZOS4
。
让我知道这是否适合您。我希望我对为什么有更多的详细信息,但是到目前为止,我对imutils源代码一无所知。