文章目录
- 一、代码
- 1.1 utils_paths.py
- 1.2 utils_paths.py
- 二、结果
代码目录:
![[Python+OpenCV项目实战]——OpenCV的DNN模块_第1张图片](http://img.e-com-net.com/image/info8/ec28d7f91b7e4341be42be39f4b54b08.png)
一、代码
1.1 utils_paths.py
import os
image_types = (".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff")
def list_images(basePath, contains=None):
return list_files(basePath, validExts=image_types, contains=contains)
def list_files(basePath, validExts=None, contains=None):
for (rootDir, dirNames, filenames) in os.walk(basePath):
for filename in filenames:
if contains is not None and filename.find(contains) == -1:
continue
ext = filename[filename.rfind("."):].lower()
if validExts is None or ext.endswith(validExts):
imagePath = os.path.join(rootDir, filename)
yield imagePath
1.2 utils_paths.py
import utils_paths
import numpy as np
import cv2
rows = open("synset_words.txt").read().strip().split("\n")
classes = [r[r.find(" ") + 1:].split(",")[0] for r in rows]
net = cv2.dnn.readNetFromCaffe("bvlc_googlenet.prototxt",
"bvlc_googlenet.caffemodel")
imagePaths = sorted(list(utils_paths.list_images("images/")))
image = cv2.imread(imagePaths[0])
resized = cv2.resize(image, (224, 224))
blob = cv2.dnn.blobFromImage(resized, 1, (224, 224), (104, 117, 123))
print("First Blob: {}".format(blob.shape))
net.setInput(blob)
preds = net.forward()
idx = np.argsort(preds[0])[::-1][0]
text = "Label: {}, {:.2f}%".format(classes[idx],
preds[0][idx] * 100)
cv2.putText(image, text, (5, 25), cv2.FONT_HERSHEY_SIMPLEX,
0.7, (0, 0, 255), 2)
cv2.imshow("Image", image)
cv2.waitKey(0)
images = []
for p in imagePaths[1:]:
image = cv2.imread(p)
image = cv2.resize(image, (224, 224))
images.append(image)
blob = cv2.dnn.blobFromImages(images, 1, (224, 224), (104, 117, 123))
print("Second Blob: {}".format(blob.shape))
net.setInput(blob)
preds = net.forward()
for (i, p) in enumerate(imagePaths[1:]):
image = cv2.imread(p)
idx = np.argsort(preds[i])[::-1][0]
text = "Label: {}, {:.2f}%".format(classes[idx],
preds[i][idx] * 100)
cv2.putText(image, text, (5, 25), cv2.FONT_HERSHEY_SIMPLEX,
0.7, (0, 0, 255), 2)
cv2.imshow("Image", image)
cv2.waitKey(0)
二、结果
![[Python+OpenCV项目实战]——OpenCV的DNN模块_第2张图片](http://img.e-com-net.com/image/info8/b4319f69d09d47ad9b559073e3586bc0.jpg)
![[Python+OpenCV项目实战]——OpenCV的DNN模块_第3张图片](http://img.e-com-net.com/image/info8/d3c7fc59233d4c1a8403dfe5600b171e.jpg)
![[Python+OpenCV项目实战]——OpenCV的DNN模块_第4张图片](http://img.e-com-net.com/image/info8/85a1a4313764434588d705aaac8ecc92.jpg)