我在Matlab中执行与VLFEAT的SIFT匹配.
单个匹配很容易显示:我按照教程进行操作.
更新1 :(从我的需求中提取问题)
接下来我会考虑场景的4种不同视图:我希望将第一台摄像机(左下角)中找到的功能与其他摄像机匹配.
图像已经不失真.
我可以匹配第三个图像:我设法用偏移校正坐标以获得正确的显示.我设置了高阈值(较少的点)以获得更易理解的图像.我的代码发布在下面,然后会有问题
指出(它不会影响问题或答案,只有我的代码中的变量名称)
由于我的4台摄像机实际上是在空间中移动的立体摄像机,因此4台摄像机(和相关输出)是:
左下:左边的摄像头命名为a.这张图片中的特征是fa描述符da......
右下角:左边的摄像头命名为a.此图像中的特征是fb描述符db......
左上角:左前一个相机在前一个瞬间命名为a.此图像中的功能是fa_old描述符da_old......
右上角:右前一个相机名为b的相机.这张图片中的特征是fb_old描述符db_old......移动较小,所以我预计SIFT可以检索相同的点.
此代码查找点并执行"蓝色匹配"和"红色匹配"
%classic instruction for searching feature
[fa,da] = vl_sift((Ia_f),'NormThresh', thresh_N, 'EdgeThresh', thresh_E) ;
% with the same line I obtain
%fa are features in the current left image (da are descriptors)
%fb are features in the …Run Code Online (Sandbox Code Playgroud) 我开始使用Glade,python和Gtk3库构建GUI.我想尝试查看在GUI中的容器内链接它的外部窗口.可能吗?哪个是最好的容器对象呢?
我开始搜索,但Gtk2中的简单方法(就像这里)在Gtk3中不能再使用了.
我在这里发现了一个非常有趣的帖子,它允许我设置目标窗口的正确ID,但我仍然对如何在GUI中显示它感到困惑.
我没有试图用cairo 改变这些教程.
到目前为止我的代码片段(我想在map_area容器中显示ID = 0x360000b的窗口,我必须使用"self."处理结构).暂时map_area容器是Drawingarea.
# if condition occurs
Gdk.Window.process_all_updates()
win_id = 0x360000b # from xwininfo command
root_win = GdkX11.X11Display.get_default()
win = GdkX11.X11Window.foreign_new_for_display(root_win, win_id)
width = win.get_width()
height = win.get_height()
self.map_area = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
pixbuf = Gdk.pixbuf_get_from_window(win, 0, 0, width, height)
cr = cairo.Context(self.map_area)
Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0)
cr.paint()
Run Code Online (Sandbox Code Playgroud)
谁能帮我?先感谢您!
经过一个小时的搜索之前的答案后,我陷入了这个小问题。我想将代码中的矩阵存储在 .yaml 文件中
我从我的代码中获得什么
Matrix
[[ 1.00665266e+03 0.00000000e+00 5.08285432e+02]
[ 0.00000000e+00 1.01086937e+03 3.45995536e+02]
[ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)
我如何尝试保存这个矩阵(mtx是我的代码中的较短名称)
fname = "calibrationC300.yaml"
data = dict(
Matrix = mtx,
)
with open(fname, "w") as f:
yaml.dump(data, f, default_flow_style=False)
Run Code Online (Sandbox Code Playgroud)
但我在 YAML 文件中读到的内容完全错误(只是转换错误?)
Matrix: !!python/object/apply:numpy.core.multiarray._reconstruct
args:
- &id001 !!python/name:numpy.ndarray ''
- !!python/tuple [0]
- b
state: !!python/tuple
- 1
- !!python/tuple [3, 3]
- !!python/object/apply:numpy.dtype
args: [f8, 0, 1]
state: !!python/tuple [3, <, null, null, null, -1, -1, 0]
- false
- …Run Code Online (Sandbox Code Playgroud) 我开始在与stereovision相关的项目中使用openCV和python.我在openCV中找到了关于C++中Census Transform的文档页面. 链接
有谁知道python实现是否有类似的功能?
(例如cv2.nameofthefunction)
谢谢你们!
编辑:PM 2Ring的优秀解决方案(再次感谢)可以使用openCV进行这一小改动:而不是使用Image.open
img = cv2.imread(img.png)
#some minor changes I needed like select some ROI and store them in img2[j]
#then a for cycle in which I wrote
src_img = img2[j]
h, w = src_img.shape
Run Code Online (Sandbox Code Playgroud)
其中"shape"指令似乎将w和h的顺序与"size"命令进行比较.然后我粘贴PM 2Ring的其余代码,它工作得非常好