Numpy从另一个张量元素中减去元素

2024-05-12 23:04:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道我的问题如何命名。我知道的唯一术语是broadcastingelement wise。如果标题不准确,请更正

背景:
之前我在做文本检测。然而,检测到的图片有点小,我无法从cropped image获取全部信息。我知道我正在使用基于英语的分类器进行单词检测

因此,我必须微调裁剪的谐音一点重叠的泰国句子。这里是一个小一些的种植面积的例子。您可以看到标点符号和声调符号部分丢失

cropped picture

我在数组中有3个正方形,叫做pts

ipdb> pts
array([[[ 436, 3085],
        [2968, 3081],
        [2968, 3227],
        [ 436, 3232]],

       [[1222,  397],
        [1833,  400],
        [1833,  498],
        [1221,  496]],

       [[  86, 3275],
        [2968, 3268],
        [2968, 3421],
        [  87, 3427]]], dtype=int32)
ipdb> pts.shape
(3, 4, 2)

稍后,我用一个公式计算它们的中心 np.sum(pts, axis=1) / 4.0。我把它放到center_pts

ipdb> center_pts
array([[1702.  , 3156.25],
       [1527.25,  447.75],
       [1527.25, 3347.75]])
ipdb> center_pts.shape
(3, 2)

最终目标:
我想把丢失的标点符号和声调符号补上

尝试:
我试着做减法,从正方形的中心做一个矢量参考,指向每个角。并用小因子多次覆盖裁剪图像丢失的部分

我的第一个想法是牺牲一个循环和使用元素明智地利用广播这样的优势

pts[0] - center_pts[0]
array([[-1266.  ,   -71.25],
       [ 1266.  ,   -75.25],
       [ 1266.  ,    70.75],
       [-1266.  ,    75.75]])

vectors pointing to 4 corners

问题:
1.没有for-loop就可以做吗?
2.他们扩大我的广场是否更有成效


Tags: 符号element中心array命名pts术语center
1条回答
网友
1楼 · 发布于 2024-05-12 23:04:23

这可以在^{}的帮助下完成:

pts - center_pts[:,None]

array([[[-1266.  ,   -71.25],
        [ 1266.  ,   -75.25],
        [ 1266.  ,    70.75],
        [-1266.  ,    75.75]],

       [[ -305.25,   -50.75],
        [  305.75,   -47.75],
        [  305.75,    50.25],
        [ -306.25,    48.25]],

       [[-1441.25,   -72.75],
        [ 1440.75,   -79.75],
        [ 1440.75,    73.25],
        [-1440.25,    79.25]]])

相关问题 更多 >