現在、Webカメラ画像からリアルタイムに青色を認識させ、青色を検出した時のみカメラ画像に日本語を表示させようとしています。
import numpy as np import cv2 from PIL import ImageFont, ImageDraw, Image cap = cv2.VideoCapture(0) While(1): _, frame = cap.read() hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) lower_light_blue = np.array([100, 45, 70]) upper_light_blue = np.array([105, 255, 255]) mask = cv2.inRange(hsv, lower_light_blue, upper_light_blue) res = cv2.bitwise_and(frame,frame, mask= mask) contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) if mask.any(): message = '青色 検出' fontpath ='./droid/DroidSansFallbackFull.ttf' font = ImageFont.truetype(fontpath, 32) img_pil = Image.fromarray(frame) draw = ImageDraw.Draw(img_pil) position = (100,800) draw.text(position, message, font = font , fill = (0, 255, 0, 0) ) cv2.imshow("frame",np.array(img_pil)) else: pass cv2.imshow("frame",frame) cv2.imshow('mask',mask) cv2.imshow('res',res) k = cv2.waitKey(5) & 0xFF if k == 27: break cv2.destroyAllWindows()
このプログラムを実行させると、「frame」と「mask」と「res」の3つのウインドが開きます。「frame」にはカメラの画像が写りますが、青色の物体をカメラの前に持ってきても「frame」に「青色 検出」と表示されません。
「cv2.imshow("frame",np.array(img_pil)) 」とその下「cv2.imshow("frame",frame) 」の書き方がわるいのでしょうか?
ご教授のほどお願い申しあげます。