我在ubuntu 16.04.02 LTS上安装了带有python 3.5的opencv-3.2.0。我想运行以下脚本:
import cv2
import numpy as np
from keras.models import load_model
# laptop camera
rgb = cv2.VideoCapture(1)
# droidcam android
# rgb = cv2.VideoCapture('http://ipaddress:port/mjpegfeed?640x480')
# pre - trinaed xml file for detecting faces
facec = cv2.CascadeClassifier('/home/shubhamrathore/haarcascade_frontalface_default.xml')
font = cv2.FONT_HERSHEY_SIMPLEX
# loading saved cnn model
model = load_model('/home/shubhamrathore/Downloads/face_reco.h5')
# predicting face emotion using saved model
def get_emo(im):
im = im[np.newaxis, np.newaxis, :, :]
res = model.predict_classes(im,verbose=0)
emo = {0: 'Angry', 1: 'Disgust', 2: 'Fear', 3: 'Happy', 4: 'Sad', 5: 'Surprise', 6: 'Neutral'}
return emo[res[0]]
# reshaping face image
def recognize_face(im):
im = cv2.resize(im, (48, 48))
return get_emo(im)
while True:
_, fr = rgb.read()
flip_fr = cv2.flip(fr,1)
gray = cv2.cvtColor(fr, cv2.COLOR_BGR2GRAY)
faces = facec.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
fc = fr[y:y+h, x:x+w, :]
gfc = cv2.cvtColor(fc, cv2.COLOR_BGR2GRAY)
out = recognize_face(gfc)
cv2.rectangle(fr,(x,y),(x+w,y+h),(255,0,0),2)
flip_fr = cv2.flip(fr,1)
cv2.putText(flip_fr, out, (30, 30), font, 1, (255, 255, 0), 2)
cv2.imshow('rgb', flip_fr)
# press esc to close the window
k = cv2.waitKey(1) & 0xEFFFFF
if k==27:
break
elif k==-1:
continue
else:
# print k
continue
cv2.destroyAllWindows()
我得到的输出是:
shubhamrathore@Rathore-Inspiron-3543:~$ python class13cam.py
Using TensorFlow backend.
VIDEOIO ERROR: V4L: index 1 is not correct!
/home/shubhamrathore/anaconda3/lib/python3.6/site-
packages/keras/engine/topology.py:1242: UserWarning: Update your
`Conv2D` call to the Keras 2 API: `Conv2D(name="convolution2d_7",
activity_regularizer=None, trainable=True, input_dtype="float32",
batch_input_shape=[None, 1, ..., activation="relu", kernel_size=(3,
3), filters=64, strides=[1, 1], padding="valid",
data_format="channels_first", kernel_initializer="glorot_uniform",
kernel_regularizer=None, bias_regularizer=None,
kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-
packages/keras/engine/topology.py:1242: UserWarning: Update your
`Conv2D` call to the Keras 2 API: `Conv2D(name="convolution2d_8",
activity_regularizer=None, trainable=True, activation="relu",
kernel_size=(3, 3), filters=64, strides=[1, 1], padding="valid",
data_format="channels_first", kernel_initializer="glorot_uniform",
kernel_regularizer=None, bias_regularizer=None,
kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-
packages/keras/engine/topology.py:1242: UserWarning: Update your
`Conv2D` call to the Keras 2 API: `Conv2D(name="convolution2d_9",
activity_regularizer=None, trainable=True, activation="relu",
kernel_size=(3, 3), filters=64, strides=[1, 1], padding="valid",
data_format="channels_first", kernel_initializer="glorot_uniform",
kernel_regularizer=None, bias_regularizer=None,
kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-
packages/keras/engine/topology.py:1242: UserWarning: Update your
`MaxPooling2D` call to the Keras 2 API:
`MaxPooling2D(name="maxpooling2d_3", trainable=True, pool_size=[2, 2],
strides=[2, 2], padding="valid", data_format="channels_first")`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-
packages/keras/engine/topology.py:1242: UserWarning: Update your
`Conv2D` call to the Keras 2 API: `Conv2D(name="convolution2d_10",
activity_regularizer=None, trainable=True, activation="relu",
kernel_size=(3, 3), filters=32, strides=[1, 1], padding="valid",
data_format="channels_first", kernel_initializer="glorot_uniform",
kernel_regularizer=None, bias_regularizer=None,
kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-
packages/keras/engine/topology.py:1242: UserWarning: Update your
`Conv2D` call to the Keras 2 API: `Conv2D(name="convolution2d_11",
activity_regularizer=None, trainable=True, activation="relu",
kernel_size=(3, 3), filters=32, strides=[1, 1], padding="valid",
data_format="channels_first", kernel_initializer="glorot_uniform", kernel_regularizer=None, bias_regularizer=None, kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py:1242: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(name="convolution2d_12", activity_regularizer=None, trainable=True, activation="relu", kernel_size=(3, 3), filters=32, strides=[1, 1], padding="valid", data_format="channels_first", kernel_initializer="glorot_uniform", kernel_regularizer=None, bias_regularizer=None, kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py:1242: UserWarning: Update your `MaxPooling2D` call to the Keras 2 API: `MaxPooling2D(name="maxpooling2d_4", trainable=True, pool_size=[2, 2], strides=[2, 2], padding="valid", data_format="channels_first")`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py:1242: UserWarning: Update your `Dropout` call to the Keras 2 API: `Dropout(trainable=True, name="dropout_2", rate=0.5)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py:1242: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(name="dense_1", activity_regularizer=None, trainable=True, input_dim=None, activation="relu", units=128, kernel_initializer="glorot_uniform", kernel_regularizer=None, bias_regularizer=None, kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py:1242: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(name="dense_2", activity_regularizer=None, trainable=True, input_dim=None, activation="relu", units=64, kernel_initializer="glorot_uniform", kernel_regularizer=None, bias_regularizer=None, kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py:1242: UserWarning: Update your `Dropout` call to the Keras 2 API: `Dropout(trainable=True, name="dropout_3", rate=0.5)`
return cls(**config)
/home/shubhamrathore/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py:1242: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(name="dense_3", activity_regularizer=None, trainable=True, input_dim=None, activation="linear", units=7, kernel_initializer="glorot_uniform", kernel_regularizer=None, bias_regularizer=None, kernel_constraint=None, bias_constraint=None, use_bias=True)`
return cls(**config)
2017-07-22 13:14:39.568141: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 13:14:39.568170: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 13:14:39.568181: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 13:14:39.568201: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 13:14:39.568211: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in ipp_cvtColor, file /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/imgproc/src/color.cpp, line 7456
Traceback (most recent call last):
File "class13cam.py", line 38, in <module>
gray = cv2.cvtColor(fr, cv2.COLOR_BGR2GRAY)
cv2.error: /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/imgproc/src/color.cpp:7456: error: (-215) scn == 3 || scn == 4 in function ipp_cvtColor
此外,当我在终端上运行'python'并'import cv2'时,不会引发错误:
shubhamrathore@Rathore-Inspiron-3543:~$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0-dev'
我从源代码构建并安装它。这是什么错误?
答案 0 :(得分:0)
我认为python的版本不同。错误消息&#39; /home/shubhamrathore/anaconda3/lib/python3.6/site- packages / keras / engine / topology.py:1242:..&#39; show version是3.6,因为python路径不是常规的,我认为python3.6是由你自己构建的并且由脚本使用。但是你在shell上发出的命令是&#39; python3&#39;它显示的版本是Python 3.5.2。