2
我将96x96像素的图像作为numpy数组。事情是我不知道如何使opencv加载此ndarray并检测面孔。如何在openCV中将灰度图像加载为numpy数组
img = cv2.imread(X)
此行不起作用。我得到这个错误
TypeError: expected string or Unicode object, numpy.ndarray found
X是输入图像阵列(灰度)
我将96x96像素的图像作为numpy数组。事情是我不知道如何使opencv加载此ndarray并检测面孔。如何在openCV中将灰度图像加载为numpy数组
img = cv2.imread(X)
此行不起作用。我得到这个错误
TypeError: expected string or Unicode object, numpy.ndarray found
X是输入图像阵列(灰度)
确定它现在使用这种
img = X[k].reshape(96,96)
但输出当I OpenCV的显示黑色图像。按照要求,这是一段代码。
import numpy as np
import cv2, cv
import numpy as np
import pandas as pd
import pylab as pl
from skimage import transform
from numpy import ravel
import pylab as pl
from sklearn import linear_model, cross_validation
from sklearn.svm import SVR
from sklearn.decomposition import PCA
from sklearn.neural_network import BernoulliRBM
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
df = pd.read_csv('/users/prabhubalakrishnan/Desktop/training.csv', header=0)
x = df['Image'][:5].values
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
X = []
for k in xrange(len(x)):
img = np.fromstring(x[k], dtype = np.uint8, sep=' ', count=96*96)
X.append (ravel(transform.resize (img.reshape(96,96) , (96,96))))
'''
for k in xrange(len(X)):
pl.imshow(X[k].reshape(96,96),cmap=pl.cm.gray)
pl.show()
'''
X = np.array(X)
X = X.astype('uint8')
print 'X:', X.shape, X.dtype
pl.ion()
for k in xrange(len(X)):
img = X[k].reshape(96,96)
faces = face_cascade.detectMultiScale(img, 1.03, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_color = img[y:y+h, x:x+w]
print 'Image',img
print 'Faces',faces
cv2.namedWindow("img", cv2.CV_WINDOW_AUTOSIZE)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
imread需要一个文件名。如果X已经是一个numpy数组,为什么不按原样使用它? – berak
这就是我所做的,它是抛出上述错误。 – pbu
那么你将不得不向我们展示*那*代码。 – berak