我正在使用 python 3.6.3、opencv 版本 4.0.0 和 Rpi 3 B。我已经成功安装了 opencv,但是当我运行以下代码时,在使用 open cv 的每个步骤中都会出现错误。例如
image=cv2.imread('badfan_spec.png',0)
错误:模块 opencv 没有属性“imread”。ax = cv2.calcHist([x],[0],None,[10],[0,256])
错误:模块 opencv 没有属性“calcHist”。等等。我尝试寻找这个问题的答案,但都没有奏效。我也尝试重新安装 opencv,但错误仍然没有消失。请给我一个合适的解决方案。
代码:
import scipy
import matplotlib.pyplot as plt
import scipy.io.wavfile
import opencv as cv2
import numpy as np
%matplotlib inline
sample_rate, X = scipy.io.wavfile.read('badfan246.wav')
print (sample_rate, X.shape,X )
image_spec=plt.specgram(X[:,0], Fs=sample_rate, xextent=(0,30))
plt.savefig('badfan_spec')
plt.show()
image=cv2.imread('badfan_spec.png',0)
#image = cv2.cvtColor(image_spec, cv2.COLOR_BGR2GRAY)
#gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)sns.kdeplot(x, bw=4, label="bw: 4")
cropped = image[52:252, 61:390]
#cv2.imshow('gray',gray)
#cropped=image[50:252,50:500]
cv2.imshow('cropped',cropped)
x=cropped.ravel()
ax = cv2.calcHist([x],[0],None,[10],[0,256])
plt.plot(ax)
plt.show()
ay1=np.array(ax)
maxes = []
for i in range (2, len(ax)-1):
if (ay1[i-1] < ay1[i] and ay1[i] > ay1[i+1]):
maxes.append(ay1[i])
print("maxes",len(maxes))
if len(maxes)==1:
print("good motor")
else:
print("bad motor")
cv2.waitKey(0)
答案1
使用这站点作为参考,您应该使用import cv2
而不是以前的方式导入 open cv。例如:
Python 3.5.6 |Anaconda, Inc.| (default, Aug 26 2018, 16:05:27) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import opencv2 as cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'opencv2'
>>> import cv2
>>>