Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用cv2.resize后获取旋转矩形的大小和位置_Python_Opencv_Image Processing - Fatal编程技术网

Python 使用cv2.resize后获取旋转矩形的大小和位置

Python 使用cv2.resize后获取旋转矩形的大小和位置,python,opencv,image-processing,Python,Opencv,Image Processing,我有一个图像,例如Width=999和Height=767。我知道我的ROI的轮廓,并使用rect=cv2.minarealect()获得其周围旋转矩形的中心位置、宽度、高度和角度。现在我需要将图像大小调整为另一个图像的大小,例如Width=4096和Height=2160。到目前为止,我正在使用cv2.resize()来实现这一点 我现在的问题是,当然,我的矩形的箱点也发生在其他地方,rect中关于中心位置,宽度,高度和角度的数据没有更新,因此为假。我尝试了不同的解决方法,但还没有找到任何解决

我有一个图像,例如
Width=999
Height=767
。我知道我的ROI的轮廓,并使用
rect=cv2.minarealect()
获得其周围
旋转矩形的
中心位置
宽度
高度
角度
。现在我需要将图像大小调整为另一个图像的大小,例如
Width=4096
Height=2160
。到目前为止,我正在使用
cv2.resize()
来实现这一点

我现在的问题是,当然,我的矩形的
箱点也发生在其他地方,
rect
中关于
中心位置
宽度
高度
角度
的数据没有更新,因此为假。我尝试了不同的解决方法,但还没有找到任何解决方案

这是我的密码:

import numpy as np
import cv2

#Create black image
img = np.zeros((767, 999, 3), np.uint8)   

#Turn ROI to white
cv2.fillConvexPoly(img, np.array(ROI_contour), (255, 255, 255))   

#Get Width, Height, and Angle of rectangle around ROI
rect = cv2.minAreaRect(np.array(ROI_contour))

#Draw rotated rectangle in red   
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(img,[box], 0, (0,0,255), 1)   

#Resize img to new size
img_resized = cv2.resize(img, (4096, 2160), interpolation=cv2.INTER_AREA) 
以下是
img
的样子,例如:

调整大小前ROI为白色的img-ROI的中心位置、宽度、高度和角度由rect确定

如何获得调整大小的ROI的新宽度、高度和角度?

这很简单

在您的示例中,h_old=767,w_old=999;h_new=4096,w_new=2160

h_比率=h_新/h_旧=5.34,w_比率=w_新/w_旧=2.16

假设在old图像中找到的矩形的中心位置、宽度和高度分别为:(old\u center\u x、old\u center\u y)、old\u rect\u width和old\u rect\u height

然后,新值将变为:

(旧中心x*w\u比率、旧中心y*h\u比率)、旧矩形宽度*w\u比率、旧矩形高度*h\u比率

由于两幅图像的纵横比也不相同, 旧的长宽比=999/767=1.30,新的长宽比=2160/4096=0.52,您也需要将此系数与新尺寸相乘。

h(新)/h(旧)和w(新)/w(旧)将为您提供新值,对吗?这里有基础数学!