选择图像后,让我们重命名它们。确保图像文件位于你正在处理的同一文件夹中。在保存它们之后,现在我们将对图像做一些修饰。图像处理在这一步中,我们将对图像做一些小的修饰,以便更好地进行处理,我也发表了一篇关于常用图像处理技术的文章。做这些修整确实有助于我们的机器处理,并提供更好的结果。我们先调整图片的大小,接下来,我们将它们转换成灰度,我们的模型处理灰度图像的速度更快。Python中的图像处理常用图像处理技术的分步指南网址:https://towardsdatascience.com/image-manipulation-in-python-cbb86a61cf0为了使用这些图像编辑技术,我们将使用我们在文章开头导入的图像模块。调整大小newsize = (600, 600) #First image retouchesimgr1 = Image.open("test1.jpg") imgr1 = imgr.resize(newsize) imgr1.save("resized1.jpg")#Second image retouchesimgr2 = Image.open("test2.jpg") imgr2 = imgr.resize(newsize) imgr2.save("resized2.jpg")灰度imgr1 = imgr1.convert('L') imgr1.save('ready1.jpg') imgr2 = imgr2.convert('L') imgr2.save("ready2.jpg")导入编辑的图像最后,我们将编辑好的图像导入到我们的程序中,这样我们就可以运行猫脸和人脸检测模型了。我们正在使用Opencv库导入图像。# Read the input image img1 = cv2.imread('ready1.jpg')
img2 = cv2.imread('ready2.jpg')人脸检测级联是时候检测人脸了,我们将运行两行代码。首先在图像中检测人脸,第二步是在图像中检测猫的脸。如前所述,我们正在请求opencv分类器。human_faces = humanface_cascade.detectMultiScale(img1, scaleFactor=1.3, minNeighbors=5, minSize=(75, 75)) cat_faces = catface_cascade.detectMultiScale(img2, scaleFactor=1.3, minNeighbors=5, minSize=(75, 75))绘制矩形在这一步中,我们将围绕检测到的面部进行绘制矩形。这些矩形可以有不同的颜色,其线框的厚度也可以调整。for (i, (x, y, w, h)) in enumerate(human_faces): cv2.rectangle(img1, (x, y), (x+w, y+h), (220, 90, 230), 3) cv2.putText(img1, "Human Face - #{}".format(i + 1), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (220, 90, 230), 2)for (i, (x, y, w, h)) in enumerate(cat_faces): cv2.rectangle(img2, (x, y), (x+w, y+h), (0,255, 0), 3) cv2.putText(img2, "Cat Faces - #{}".format(i + 1), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 255), 2)(220,90,230)和(0255,0)是我们要绘制的矩形颜色,你可以和它们一起玩,看看颜色是怎么变化的。(3) 是线条的粗细,你可以更改该值并查看其外观。保存结果最后,我们将保存检测到的人脸图像。要查看工作的最终结果,最好的方法是保存并检查,确保正确传递变量名。在运行这最后一段代码之前,如果一切正常的话,我建议你继续检查整个代码。#Saving the images using imwrite methodcv2.imwrite("faces_detected1.png", img1)cv2.imwrite("faces_detected2.png", img2)结果这是我的工作成果。第一种是人脸检测,第二种是猫脸检测结果。如你所见,我们的机器知道哪一个是人类,哪一个是猫脸。我还测试了这个程序,将两个图像合并在一个图像中,我收到的结果可以在下面找到。faces_detected1.png
faces_detected2.png
其他与其逐个测试每个图像,不如让我们看看将两个图像合并为一个并运行代码时会发生什么。我们可以看到,我们的机器现在能够理解和区分猫和人的脸。result
恭喜! !你已经创建了一个程序,可以在图像中检测猫和人的脸。现在,你已经知道如何教机器同时为你做两件事了。希望你喜欢这篇教程,并在今天学到一些新东西。计算机视觉是一个伟大的领域,你可以做的事情是无限的。你可以在不同的图像上测试代码,看看它是如何工作的。它可能不是对所有的图像都有效,因为预测依赖于训练过的数据。