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