Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 使用IMGAUGE旋转后,图像的形状不会改变_Python_Image Processing_Computer Vision_Data Augmentation - Fatal编程技术网

Python 使用IMGAUGE旋转后,图像的形状不会改变

Python 使用IMGAUGE旋转后,图像的形状不会改变,python,image-processing,computer-vision,data-augmentation,Python,Image Processing,Computer Vision,Data Augmentation,我正在按以下方式旋转图片: # Read in image img = cv2.imread("pic.jpg") height, width, _ = img.shape print("height ", height) print("width ", width) # Rotate image by 90 degrees augmentation = iaa.Affine(rotate=90) img_aug = augmenta

我正在按以下方式旋转图片:

# Read in image
img = cv2.imread("pic.jpg")
height, width, _ = img.shape
print("height ", height)
print("width ", width)

# Rotate image by 90 degrees
augmentation = iaa.Affine(rotate=90)
img_aug = augmentation(image=img)

height, width, _ = img_aug.shape
print("Height after rotation ", height)
print("Width after rotation ", width

> height  1080
> width  1920
> Height after rotation  1080
> Width after rotation  1920

为什么图像的形状没有改变?

图像增强不会改变图像的实际形状或物理形状。将原始的
形状
想象为一个
窗口
,从中可以看到图像或外部世界。在这里,所有的变换,即旋转、拉伸、平移,或一般的单应性或非线性扭曲,都应用于你窗外的世界。在我的类比中,从你看图像的那个窗口,无论外面的世界如何变化,也就是图像如何变化,都保持不变

现在,它显然可以将原始视图中不存在的其他区域引入到增强视图中。最常见的情况是,新引入的像素将是黑色的,或者它可能取决于应用了什么类型的
填充

简而言之,增强操作不像矩阵
转置
那样,实际形状可能会发生变化

img=cv2.imread(“img.png”)
增强=iaa.仿射(旋转=90)
img_aug=增强(image=img)
让我们看看图片:

Original Image


图像增强不会改变图像的实际形状或物理形状。将原始的
形状
想象为一个
窗口
,从中可以看到图像或外部世界。在这里,所有的变换,即旋转、拉伸、平移,或一般的单应性或非线性扭曲,都应用于你窗外的世界。在我的类比中,从你看图像的那个窗口,无论外面的世界如何变化,也就是图像如何变化,都保持不变

现在,它显然可以将原始视图中不存在的其他区域引入到增强视图中。最常见的情况是,新引入的像素将是黑色的,或者它可能取决于应用了什么类型的
填充

简而言之,增强操作不像矩阵
转置
那样,实际形状可能会发生变化

img=cv2.imread(“img.png”)
增强=iaa.仿射(旋转=90)
img_aug=增强(image=img)
让我们看看图片:

Original Image


谢谢@swag2198的详细解释。我现在只是使用cv2.ROTATE_90_顺时针来改变图像的形状。我很好奇,你为什么要改变图像的形状!我很感激你的话,但请看这里:。因为它可以在旋转堆栈溢出图像中看到,它切断了图像的一部分。通过cv2.ROTATE_90_顺时针改变形状,这不应该发生。我用它来增强目标检测模型。如果我不改变形状,我的边界框将得到负值。iaa.Rot90(keep_size=False)将实现我想要的:-)iaa.Affine(rotate)不改变形状是有道理的,因为图像不仅可以旋转-90、90和180,而且可以旋转任何角度。谢谢@swag2198的详细解释。我现在只是使用cv2.ROTATE_90_顺时针来改变图像的形状。我很好奇,你为什么要改变图像的形状!我很感激你的话,但请看这里:。因为它可以在旋转堆栈溢出图像中看到,它切断了图像的一部分。通过cv2.ROTATE_90_顺时针改变形状,这不应该发生。我用它来增强目标检测模型。如果我不更改形状,我的边界框会得到负值。iaa.Rot90(keep_size=False)将执行我想要的操作:-)有意义的是,iaa.Affine(rotate)不会更改形状,因为图像不仅可以旋转-90、90和180,还可以旋转任何角度。你旋转内容,而不是图像。你旋转内容,而不是图像。