我正在尝试估计某些图像的变换并在Python中使用stitcher.estimateTransform()
和stitcher.composePanorama()
进行拼接。估计转换后,composePanorama给出以下错误:
pano不是numpy数组,也不是标量
我尝试使用cv2.fromarray(left)
将NumPy数组转换为Mat对象,但它仅适用于cv,不适用于cv2。因此,如何在Cv2中将此numpy转换为MAT数组。我找不到将composePanorama
与python绑定结合使用的任何示例。对于此错误的任何解决方案或将stitcher.estimateTransform()
与OpenCV-Python绑定一起使用的示例,将不胜感激。
注意:尽管OpenCV-Python绑定中的Stitching类不完整(由于自动生成的绑定),但help(cv2.createStitcher())
证明它包含composePanorama()
和{{1 }}。
注意:我可以毫无问题地使用estimateTransform()
,但是使用stitcher.stitch()
并没有帮助,因为我试图不计算每次迭代中的变换主循环。
我的简单代码:
stitcher.stitch()
答案 0 :(得分:1)
我有同样的问题。据我所知,composePanorama
有两个重载。
CV_WRAP Status composePanorama(OutputArray pano);
Status composePanorama(InputArrayOfArrays images, OutputArray pano);
这是我们需要的第二个重载,因为pano
是一个输出参数,在Python中将其作为返回值给出。不幸的是,第二个重载没有用CV_WRAP
标记,这将使其可用于Python绑定。因此,我只能看到的解决方案是:
CV_WRAP
(我不确定它是否真的那么简单)尽管我会很高兴其他人可以发布答案,说明如何在Python中完成此任务而无需完成上面的复杂任务。
答案 1 :(得分:1)
要使用stitcher.estimateTransform()
和stitcher.composePanorama()
,您将需要
然后构建python模块:
cd ~/opencv
mkdir build
cd build
cmake ../
make
sudo make install
然后将模块从安装位置移动到虚拟环境。在我的情况下是/usr/local/lib/python3.7/site-packages/cv2。
有关更多信息,请参见https://www.pyimagesearch.com/2018/08/17/install-opencv-4-on-macos/和https://docs.opencv.org/4.1.0/da/d49/tutorial_py_bindings_basics.html和https://docs.opencv.org/4.1.1/da/df6/tutorial_py_table_of_contents_setup.html。