OpenCV:在opencv中调用warpPerspective后,如何计算裁剪(或修剪)以理想地适合没有空白空间?

Posted

技术标签:

【中文标题】OpenCV:在opencv中调用warpPerspective后,如何计算裁剪(或修剪)以理想地适合没有空白空间?【英文标题】:OpenCV: After calling warpPerspective in opencv, how to calculate a crop (or trim) to ideally fit without empty space? 【发布时间】:2016-05-01 21:35:13 【问题描述】:

我正在使用 warpPerspective() 来稳定视频。调用此函数后,我留下了一个稍微旋转的图像,在图像矩形内留下空白空间。例如

我想计算在没有空白空间的情况下修剪/裁剪适合图像矩形的图像需要多少。我不知道如何计算这个。我想这一定是一个常见问题,但我找不到堆栈溢出的任何结果(除了计算拼接图像的轮廓,我认为这是一个非常不同的问题)。

示例代码:

import urllib
import numpy as np
import cv2
import matplotlib.pyplot as plt

link = "http://i68.tinypic.com/f4mhy0.jpg"
req = urllib.urlopen(link)
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
img = cv2.imdecode(arr,-1) 
img=cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
(h, w) = img.shape[:2]
M=np.array([[1.00430091e+00,7.30151802e-03,-1.55476794e+01][-5.88214567e-03,1.00545504e+00,-3.72084380e+00], [4.47652947e-07,3.99215743e-06,1.00000000e+00]])
warped = cv2.warpPerspective(img, M, (w,h))
plt.imshow(warped),plt.show()

【问题讨论】:

How to show the whole image when using OpenCV warpPerspective的可能重复 【参考方案1】:

您应该在原始图像的 4 个角上使用具有相同矩阵的变换。这样你就会知道弯道的走向。

【讨论】:

【参考方案2】:

在motion_stabilizing.cpp 中有一个名为estimateOptimalTrimRatio 的函数。这解决了问题!

【讨论】:

以上是关于OpenCV:在opencv中调用warpPerspective后,如何计算裁剪(或修剪)以理想地适合没有空白空间?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 和 OpenCV 中调用其他文件中的函数

在Android中c++里调用opencv

如何通过C#调用OpenCV函数(自制OpenCV的c++ dll文件)

opencv调用摄像头函数

如何在 c++ 中调用 openCV 中的 cvMorphologyEx?

请教,jni调用,类型转换.用opencv进行静态人脸检测