Python 如何将调整大小的图像坐标转换为原始图像的坐标?
我正在使用opencv在python中创建一个图像裁剪器。我正在从鼠标点击中选择要裁剪的4个截面点的坐标。问题是我正在调整图像的大小以在屏幕上显示(800x600),并且我无法使用这些点来裁剪原始图像 如何将这些坐标转换为,以便裁剪大分辨率图像,但显示调整大小的图像 例如,如果图像为1920x1080,则需要整个屏幕,因此我将其调整为1067x600,然后取点进行裁剪,但裁剪后的图像将是调整大小的图像,而不是原始高分辨率图像。Python 如何将调整大小的图像坐标转换为原始图像的坐标?,python,python-3.x,image,opencv,image-processing,Python,Python 3.x,Image,Opencv,Image Processing,我正在使用opencv在python中创建一个图像裁剪器。我正在从鼠标点击中选择要裁剪的4个截面点的坐标。问题是我正在调整图像的大小以在屏幕上显示(800x600),并且我无法使用这些点来裁剪原始图像 如何将这些坐标转换为,以便裁剪大分辨率图像,但显示调整大小的图像 例如,如果图像为1920x1080,则需要整个屏幕,因此我将其调整为1067x600,然后取点进行裁剪,但裁剪后的图像将是调整大小的图像,而不是原始高分辨率图像。 如何将坐标(23445)转换为未调整大小的图像坐标?您可以使用百分比
如何将坐标(23445)转换为未调整大小的图像坐标?您可以使用百分比处理此问题。 基本上,保持图像的纵横比,将其调整为较小的尺寸
def resize_to_max_dimension(image,max_dimension):
image_height,image_width,channels = image.shape
if image_height < max_dimension and image_width < max_dimension: ##Only resize larger images
return image
if image_height > image_width:
final_height = max_dimension
final_width = int(final_height * image_width / image_height )
else:
if not image_width == 0:
final_width = max_dimension
final_height = int(final_width * image_height / image_width)
else:
final_height = 0
final_width = 0
return cv2.resize(image,(int(final_width),int(final_height)))
您可能希望显示一些有关显示方式的代码,并告诉我们您当前的屏幕分辨率是多少这不是一个简单的转换和缩放点的问题吗?
image_height,image_width,channels = original_image.shape
crop_x_min = image_width * x_min_percentage
crop_y_min = image_height * y_min_percentage
crop_x_max = image_width * x_max_percentage
crop_y_max = image_height * y_max_percentage