【发布时间】:2015-04-28 05:26:46
【问题描述】:
我已经使用 c++ opencv 训练了一个人脸识别系统。我做了一些测试,识别在 C++ 代码中效果很好,所以我用这个训练保存了一个文件。当我尝试在 python 上加载这个文件时,预测总是 0.0。我对 python 和 numpy 数组很陌生。下面我将用 c++(有效)和 python 编写代码来加载图像并应用预测。
C++(工作得很好)
Mat face;
face = frame( faceRect );
// Convert to grayscale
cvtColor( face, face, COLOR_BGR2GRAY );
// Equalize hist
equalizeHist( face, face );
// Resize to 60x60
resize( face, face, samplesSize );
// Convert to CV_32FC1
face.convertTo( face, CV_32FC1 );
// Reshape to a row vector, 1x3600
face = face.reshape( 1, 1 );
// Make prediction
float prediction = svm.predict( face, true );
cout << "Predicao: " << prediction << endl;
Python:
def faceRecogntion( self, faceRoi):
# 1- Convert to grayscale
grayface = cv2.cvtColor(faceRoi, cv2.COLOR_BGR2GRAY)
# 2- Equalize hist
cv2.equalizeHist( grayface, grayface)
# 3 - Resize it to 60x60
dim = ( 60, 60)
grayface = cv2.resize(grayface, dim, interpolation = cv2.INTER_AREA)
print 'Image size: ' + str(grayface.shape)
# 4 - Convert to 32F
faceFloat = np.array(grayface, dtype=np.float32);
faceFloat = faceFloat.reshape( -1, 3600)
# 5- Apply prediction
result = self.svm.predict( faceFloat )
print result
cv2.waitKey(0)
return
谢谢 ;)
【问题讨论】: