PutText 重叠问题 - 图片

PutText overlap issue - image

我正在使用 FLIR Lepton 相机捕捉热图像,然后尝试使用 PutText 方法在图像上显示温度,但得到的结果非常奇怪。提前感谢任何建议。

代码:

import cv2
import numpy as np

image_counter = 0
video = cv2.VideoCapture(0,cv2.CAP_DSHOW)
video.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('Y','1','6',' '))
video.set(cv2.CAP_PROP_CONVERT_RGB, 0)
if video.isOpened():
    rval, frame = video.read()
else:
    rval = False
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
while rval:
rval, frame = video.read()
frame_roi = frame[:-3, :]
normed = cv2.normalize(frame_roi, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
cl1 = clahe.apply(normed)
nor = cv2.cvtColor(cl1, cv2.COLOR_GRAY2BGR) 
color = cv2.applyColorMap(nor, cv2.COLORMAP_JET)
for i in range(frame.shape[0]):
    for j in range(frame.shape[1]):
        pixel = frame [i,j]
        Temp_C = pixel/100 - 273.15
        color = cv2.putText(color, "{:.2f}".format(Temp_C), (10,30), cv2.FONT_HERSHEY_SIMPLEX, 0.45, cv2.LINE_AA)
        print (Temp_C)
cv2.imshow("preview", cv2.resize(color, dsize=(640,480), interpolation=cv2.INTER_LINEAR))
key = cv2.waitKey(100)
if key == 27: # exit on ESC
    break

看这里:

for i in range(frame.shape[0]):
    for j in range(frame.shape[1]):
        pixel = frame [i,j]
        Temp_C = pixel/100 - 273.15
        color = cv2.putText(color, "{:.2f}".format(Temp_C), (10,30), cv2.FONT_HERSHEY_SIMPLEX, 0.45, cv2.LINE_AA)
        print (Temp_C)

你基本上是循环遍历图像的每个像素,获取它的温度并将温度写在图像上。

但是您在图像的一个位置写入每个温度;在 (10, 30),所以如果有 1000 个像素,您将在图像的一个点上写下 1000 个温度。

不可能将图像上检测到的每个温度都展开而不重叠,除非每个文本只有一个像素大小,可以覆盖整个屏幕。

您可以尝试这样的操作:

for i in range(0, frame.shape[0], 50):
    for j in range(0, frame.shape[1], 50):
        pixel = frame [i,j]
        Temp_C = pixel/100 - 273.15
        color = cv2.putText(color, "{:.2f}".format(Temp_C), (i,j), cv2.FONT_HERSHEY_SIMPLEX, 0.45, cv2.LINE_AA)
        print (Temp_C)

图像上每隔 50 个像素显示一次温度。