【发布时间】: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