摄像头水色监控
本文将利用摄像头监控水的颜色变化,利用的是图像识别+opencv的处理。而其中的图像识别部分可参见我的文章“煤等矿物的视觉识别”,链接如下 https://mp.weixin.qq.com/s/xYlBPypVgvLOg0a6GErb5Q,所以不再重复。而本篇文章可接在图像识别后面达到视频监控效果。
首先我们已经依靠文章“煤等矿物的视觉识别”训练出了水色图像识别模型。接着是摄像头的处理部分。
程序思维如下:
首先读取模型,建立标签
接着cv2读取摄像头
因为要对图像处理添加中文标注,所以需要随时保存摄像头图片,
接着读取图片转为PIL图片,设置字体,在(300,10)处添加文字
文字内容为标签的预测值,然后随时更新摄像头状态即可。
代码如下:
from keras.models import load_model
from keras.preprocessing.image import img_to_array,load_img
import numpy as np
import cv2
from PIL import Image
from PIL import ImageDraw,ImageFont
载入模型
model = load_model(‘rock_selector.h5’)
label = np.array([‘黄水’,‘清水’])
def image_change(image):
image = image.resize((224, 224))
image = img_to_array(image)
image = image / 255
image = np.expand_dims(image, 0)
return image
video = “http://admin:admin@192.168.137.165:8081/”
cap = cv2.VideoCapture(0)
while True:
_,frame = cap.read()
bg = “temp.png”
cv2.imwrite(bg,frame)
image = load_img(“temp.png”)
#plt.imshow(image)
image = image_change(image)
img=cv2.imread(“temp.png”)
img_PIL = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
myfont = ImageFont.truetype(r’C:/Windows/Fonts/simfang.ttf’, 40)
draw = ImageDraw.Draw(img_PIL)
draw.text((300, 10), label[model.predict_classes(image)][0], font=myfont, fill=(200, 100, 0))
img_OpenCV = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
cv2.imshow(‘frame’, img_OpenCV)
cv2.waitKey(1)
全部代码,包括模型在公众号回复“摄像头水色监控”获取
欢迎大家关注公众号“人工智能实战及常见代码分享”,