【问题标题】:Append to text file in Python and OpenCV在 Python 和 OpenCV 中追加到文本文件
【发布时间】:2020-10-28 17:05:25
【问题描述】:

我的代码出现错误。基本上,我有一些函数叫做 Triangulate

tringulate = cv2.triangulatePoints(projection_matrix_1, projection_matrix_2, projection_points1, projection_points_2)

这个函数给了我一些这样的输出

[[ X1 X2 X3 ... Xn]
 [ Y1 Y2 Y3 ... Yn]
 [ Z1 Z2 Z3 ... Zn]
 [ W1 W2 W3 ... Wn]]

我还有另一个函数可以从某个相机帧中检测描述符。

kps, desc = self.detector.detectAndCompute(self.image, None)

desc的输出是这样的

here [[ 97  93   2 ..., 255  63   1]
 [ 64 141   1 ..., 123 255  62]
 [ 97  29  14 ..., 253 127   3]
 ..., 
 [218 233 131 ..., 253 255  15]
 [  1 237 143 ..., 127 255  15]
 [ 97 253  13 ..., 176 255   3]]

here [[ 64 141   0 ..., 123 255  31]
 [ 97  29  78 ..., 253 127   1]
 [  0  13   0 ..., 123 255  30]
 ..., 
 [ 97 253  15 ..., 255 255   3]
 [ 64 141   1 ...,   2  16  48]
 [  1 237 143 ..., 255 102  15]]

每当有新读数出现时,这两个函数的输出都会发生变化。读数来自机器人运动。记录在rosbag中。

现在我想写一个txt文件。

X1 Y1 Z1 W1 desc1 X2 Y2 Z2 W2 desc2 ... Xn Yn Zn Wn desc1

其中 x y z w 是 triangulate 的第一次读取的输出,而 desc1 是 desc 函数的第一次读取的输出 .. 等直到它完成。

我能够读取 triangulate 的读数并添加它,而这段代码没有任何问题

        f = open("11.txt", "w")  # Erases the file content.
        f.close()

here exists both functions

        f = open("11.txt", "a")
        f.write(','.join(str(v) for v in self.tringulate.T.flat) + '\n')
        f.close()

我能够保存 X1 Y1 Z1 W1 X2 Y2 Z2 W2 但没有 desc1 ... desc2 ...etc

【问题讨论】:

  • 随机提示:考虑使用with 语句自动关闭文件而不需要close。这不会解决您的问题,但了解这些内容并没有什么坏处。
  • @Saelyth 非常感谢:) 但是任何关于我想要达到的目标的建议都将不胜感激:)
  • 说实话我不明白你的问题是什么。这个问题令人困惑,或者以我不明白你想做什么以及你被击中的方式解释。
  • @Saelyth 基本上,我想要一个 txt 文件,它的 X1 Y1 Z1 W1 Desc1 X2 Y2 Z2 W2 Desc2 .. 最多 Xn Yn Zn Wn Descn xyz 并且我从函数中得到输出上面提到的三角化。我把它们做成 [[x1 x2 x3 x3 ..][y1 y2 y3 y4 ..][z1 z2 z3 z4 ..][w1 w2 w3 w4 ..]] 的形状。但是 Desc 我是从上面提到的函数 detectAndcompute 中得到它的,上面提到了它的形状......我怎样才能将它们附加到 txt。我上面的代码能够附加 x1 y1 z1 w1 x2 y2 z2 w2 ... xn yn zn wn 但没有 Desc1 Desc2 ... Descn。希望现在很清楚。

标签: python numpy opencv append


【解决方案1】:

尝试先附加两个数组(tringulate, desc),然后将它们存储在文件中。 Refer to this link

您可以为此使用 numpy 库。首先,将两个数组都转换为 numpy 数组(如果它们不是 numpy 数组),然后使用带有 axis=1 的 np.append() 函数附加它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2016-01-01
    相关资源
    最近更新 更多