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函数(自制OpenCV的c++ dll文件)