我写了一些代码来检测报纸图片中的人脸,我试图将这些找到的人脸的列表重新排序,从图片中复制并粘贴到一个新的图片中。
<clarification per@shortcipher3 comment>新的图像将在顶部有文件名,然后是一个马赛克的脸。下面的代码片段实际上是在一个循环中,通过几个图像。我希望所有新的马赛克图像最终成为一个大图像。
下面是我的代码:
pil_img = Image.open(imgfile)
opencvImage = cv.cvtColor(np.array(pil_img), cv.COLOR_RGB2BGR)
gray = cv.cvtColor(opencvImage, cv.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(opencvImage, scaleFactor=1.4, minNeighbors=4, minSize=(30,30))
my_faces = []
for x,y,w,h in faces:
drawing.rectangle((x,y,x+w,y+h), outline="white")
my_faces.append((x,x+w,y,y+h))
for face in my_faces:
print(face)
# roi = i[face[0]:face[1], face[2]:face[3]]
# cv.imshow('ROI',face)
# cv.waitKey(0)
contact_sheet=Image.new('RGB', (600,300))
contact_sheet.show()
pil_img.show()
这些行在处于活动状态时通过以下错误消息被注解掉:
TypeError: 'Image' object is not subscriptable
我真正想做的是将这些面粘贴到新的contact_sheet中。
1条答案
按热度按时间rfbsl7qr1#
你可以把它们写在
for
循环中要从单独的图像创建剪辑,您可以使用
feh
(如果您安装了它):你也可以在纯粹的opencv中创建一个蒙太奇,为此我建议首先将面缩放到统一的大小,然后创建一个拼接它们: