我想以0.75倍的比例因子重新缩放图像。在重新缩放图像一次后,如果图像的尺寸不满足特定要求,我希望图像以0.75的增量比例因子重新缩放。但是,当我声明while循环满足条件时,循环运行一次,并且不会再次重新缩放图像(即使它不满足条件)
我尝试过嵌套多个while循环,但似乎没有任何效果。我无法在第一次重新缩放时完全重新缩放图像的原因是,我允许用户输入自己的图像。重新缩放一次会使图像过大或过小,无法使用
import matplotlib.pyplot as plt
import cv2
import numpy as np
image = input("Input File Name: ")
parsedImg = cv2.imread(image, 1)
imgHeight = int(parsedImg.shape[0])
imgWidth = int(parsedImg.shape[1])
while (imgWidth >= 814) and (imgHeight >= 611):
scaledImg = cv2.resize(parsedImg, None, fx = 0.75, fy = 0.75)
imgWidth = int(scaledImg.shape[1])
imgHeight = int(scaledImg.shape[0])
print(imgWidth, imgHeight)
我输入了一个名为“test_img.png”的图像,其尺寸为888x888(一个正方形图像),我希望它能适合814x611的矩形(同时仍保持相同的宽高比)。while循环运行一次,打印666 666
,这是预期的,但是imgHeight >= 611
的条件尚未满足。不管怎样,while循环不会再次运行,而是继续运行
您有
(imgWidth >= 814) and (imgHeight >= 611)
,如果其中一个条件不再满足,它将计算为false
。根据您的描述,您希望:这将使
while
循环运行,直到两个条件都不再满足为止此外,您需要确保在下一次迭代中,将使用先前重新缩放的图像。所以它可能看起来像这样:
或者,更好的方法是,在进入
while
循环时,避免只创建scaledImg
:相关问题 更多 >
编程相关推荐