numpy python openCv 重映射

0 投票
2 回答
941 浏览
提问于 2025-05-10 15:18

我需要把一个函数从opencv的C++版本转换成opencv的Python版本。C++的代码是: (我遇到问题的部分)

map_x.at<float>(j,i) = pc.x;
map_y.at<float>(j,i) = pc.y;


remap(frame, unDistFrame, map_x, map_y, CV_INTER_LINEAR, 0, Scalar(0, 0, 0));

在Python中,我有:

    rows,cols,channels = frame.shape

    map_x = np.array((rows,cols, channels), np.uint8) # (that is: height, width,numchannels)
    map_y = np.array((rows,cols, channels), np.uint8)
    frameUnDist = np.array((rows,cols, channels), np.uint8)



    for i in xrange(rows):
        for j in xrange(cols):
            p1 = [i, j]

            p1_a = sendToFunction(params, p1)

           np.insert(map_x, p1_a[0])
           np.insert(map_y, p1_a[1])

          cv2.remap(frame, frameUndist, map_x, map_y, flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS, fillval=(0, 0, 0, 0))

插入的那一行显然是错的,因为我没有指定要把值插入到哪里。我应该怎么做呢?

谢谢。

相关文章:

  • 暂无相关问题
暂无标签

2 个回答

0

解决了,谢谢。我需要的是项集。

map_x.itemset((j,i),p1_a[0])
map_y.itemset((j,i),p1_a[1])
1

在Python的OpenCV中,Mats其实就是numpy数组,所以你可以直接用 map_x[j,i] = pc.x 这样的方式来操作。

撰写回答