首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >隔离视频流中的彩色文本区域

隔离视频流中的彩色文本区域
EN

Stack Overflow用户
提问于 2018-08-22 20:01:17
回答 1查看 93关注 0票数 3

我想在现场视频中检测5-6米高的彩色文本。这些文本的宽度接近30-40厘米。我使用了一些方法。例如,一种是HSV来检测颜色。但由于HSV值应在环境照明更改时更改,因此该选项没有什么用处。此外,它不能检测超过30厘米的颜色。此外,我还寻找了用于文本识别的OCR。为了我的研究,人们说我应该使用颜色检测来完成这项任务,因为它比OCR更容易。而且,对于期望的结果来说,这是足够的。

总而言之,即使在室内或室外环境中,如何检测直播视频流中5-6米外的红色和绿色文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-22 23:01:43

这更多的是一种可能的前进方式的建议,而不是解决方案,但一种想法是检查图像中每一行的聚合色调。

绿色(顶部标签)的色调值为~90,红色(底部标签)的色调值为~0,因此,如果我们计算图像中每一行的色调值之和,我们预计最绿色的行将具有最高的色调值,而红色的行将具有最低的色调值。

代码语言:javascript
运行
AI代码解释
复制
from scipy.misc import imread
import matplotlib.pyplot as plt
from colorsys import rgb_to_hsv
%matplotlib inline

# read in the image in RGB
img = imread('vUvMl.jpg', mode='RGB')

# find the sum of the Hue, Saturation, and Value values
# for each row in the image, top to bottom
rows = []
h_vals = []
s_vals = []
v_vals = []

for idx, row in enumerate(img):
    row_h = 0
    row_s = 0
    row_v = 0
    for pixel in row:
        r, g, b = pixel / 256
        h, s, v = rgb_to_hsv(r, g, b)
        row_h += h
        row_s += s
        row_v += v
    h_vals.append(row_h)
    s_vals.append(row_s)
    v_vals.append(row_v)
    rows.append(idx)

# plot the aggregate hue values for each row of the image
plt.scatter(rows, h_vals)
plt.title('Aggregate hue values for each row in image')
plt.show()

结果:

该图的左侧具有较高的值,而向右具有较低的值,这表明绿色文本位于图像的顶部,红色文本位于图像的底部。

如果其中一个标签位于图像的左侧/右侧,则需要转置图像矩阵并找到按列显示的色调值,但希望这能激发您的想法……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51974279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档