opencv study notes ten--deep learning framework loading

opencv study notes ten--deep learning framework loading

# 导入工具包
import utils_paths
import numpy as np
import cv2
import matplotlib.pyplot as plt#Matplotlib是RGB
# 绘图展示
def cv_show(name,img):
    b,g,r = cv2.split(img)
    img_rgb = cv2.merge((r,g,b))
    plt.imshow(img_rgb)
    plt.show()
def cv_show1(name,img):
    plt.imshow(img)
    plt.show()
    cv2.imshow(name,img)
    cv2.waitKey()
    cv2.destroyAllWindows()
# 标签文件处理
rows = open("synset_words.txt").read().strip().split("\n")
classes = [r[r.find(" ") + 1:].split(",")[0] for r in rows]
# Caffe所需配置文件
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))
# image scalefactor size mean swapRB 这是下一个函数的输入参数  RGB均值
blob = cv2.dnn.blobFromImage(resized, 1, (224, 224), (104, 117, 123))
print("First Blob: {}".format(blob.shape))
First Blob: (1, 3, 224, 224)
# 得到预测结果
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)
array([[[112, 136, 137],
        [ 92, 116, 116],
        [ 46,  63,  68],
   
        ...,
        [ 22,  63, 134],
        [ 22,  65, 136],
        [ 17,  62, 133]]], dtype=uint8)
# 显示
cv_show("Image", image)

png

# Batch数据制作 
images = []

# 方法一样,数据是一个batch
for p in imagePaths[1:]:
	image = cv2.imread(p)
	image = cv2.resize(image, (224, 224))
	images.append(image)

# blobFromImages函数,注意有s
blob = cv2.dnn.blobFromImages(images, 1, (224, 224), (104, 117, 123))
print("Second Blob: {}".format(blob.shape))
Second Blob: (4, 3, 224, 224)
# 获取预测结果
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)
	cv_show("Image", image)

png

png

png

png

Guess you like

Origin blog.csdn.net/weixin_41756645/article/details/125639407