我有一个使用OpenCV编写的python脚本,我正在将所有内容更新为OpenCV2(cv2)。问题是当我使用PIL将图像转换为CVarray时。
pil_im = pil_im.convert('L')
cv_im = cv.CreateImageHeader(pil_im.size, cv.IPL_DEPTH_8U, 1)
cv.SetData(cv_im, pil_im.tostring(), pil_im.size[0])
pil_im
稍后会在我的代码中找到,
# Crop images
for img in imgList:
pil_im = Image.open(img)
cv_im = pil2cvGrey(pil_im)
faces = DetectFace(cv_im, faceCascade)
if faces:
n = 1
for face in faces:
croppedImage = imgCrop(pil_im, face[0], padding)
(fname, ext) = os.path.splitext(img)
fname = os.path.basename(fname)
croppedImage.save(outputimg + '\\' + fname + ' -c' + ext)
n += 1
我知道我的代码工作正常,我只是想通过仅包含CV2(目前包括CV和CV2)来使pyinstaller exe更小。
答案 0 :(得分:0)
据我所知,cv2不再使用CVarray类型。这些是c数据类型的包装,而cv2现在本身使用numpy数据结构。要从PIL图像转换为cv2数组,请执行
from PIL import Image
import numpy
img = Image.open('lena.png')
array = numpy.array( img )