Python 如何将圆形图像裁剪为内接正方形,然后裁剪为内接圆形,最后裁剪为内接正方形?
我想根据以下内容裁剪下面附带的圆形图像:Python 如何将圆形图像裁剪为内接正方形,然后裁剪为内接圆形,最后裁剪为内接正方形?,python,image,opencv,image-processing,python-imaging-library,Python,Image,Opencv,Image Processing,Python Imaging Library,我想根据以下内容裁剪下面附带的圆形图像: 将输入的圆形图像裁剪为内接在圆中的唯一正方形 将正方形图像向下裁剪到正方形中内接的圆 将上一步中的圆形图像裁剪为方形,以嵌入图像 我正在使用python、opencv和PIL。我曾尝试过使用硬编码坐标进行裁剪,但这显然会在应用于其他图像时产生问题,因此我希望有一个通用的解决方案 我已经包含了我希望如何裁剪它的粗略可视化: 此外,我还包括了原始图像: 如果您能提供一段代码片段并进行简要解释,我们将不胜感激。您不需要执行中间裁剪 只需计算结果平方参数 类似这
如果您能提供一段代码片段并进行简要解释,我们将不胜感激。您不需要执行中间裁剪 只需计算结果平方参数 类似这样的伪代码(我更擅长c++):
您不需要执行中间裁剪 只需计算结果平方参数 类似这样的伪代码(我更擅长c++):
要裁剪的图像在几何上是一个以输入图像为中心的正方形,大小为一半。这是因为你要写两次,每次平方收缩2的平方根,除以SQRT(2)两次和除以2是一样的
因此,如果您有一个侧面为D的输入正方形(或直径为D的圆形图像),您需要做的是以中心(D/2,D/2)和侧面为D/2进行裁剪。要裁剪的图像在几何上是一个以输入图像为中心的正方形,,大小为输入图像的一半。这是因为你要写两次,每次平方收缩2的平方根,除以SQRT(2)两次和除以2是一样的
因此,如果您有一个侧面为D的输入正方形(或直径为D的圆形图像),您需要做的是裁剪中心(D/2,D/2)和侧面为D/2。根据输入中圆的直径计算内部正方形的大小似乎相当简单。然后,你就可以直接达到你的最终目标,而不需要中间步骤(如果你所追求的是中间步骤)。@john And You lost attached Img圆是否总是像你的示例中那样完美地适合正方形图片?根据输入中圆的直径来计算内正方形的大小似乎很简单。然后,你就可以直接达到你的最终目标,而不需要中间步骤(如果这是你所追求的)。@john和You lost attached Img圆是否总是像你的例子中那样完美地符合正方形图片?是的,我刚刚提出了同样的解决方案。谢谢。是的,我刚刚想出了同样的解决办法。谢谢
def calcSideOfInscribedSquare(current_size):
return current_size / sqrt(2)
initial_side = min(image.cols, image.rows)
first_squre_side = calcSideOfInscribedSquare(initial_side)
second_square_side = calcSideOfInscribedSquare(first_squre_side)
cv.Rect result_square(
image.cols / 2 - second_square_side / 2,
image.rows / 2 - second_square_side / 2,
second_square_side,
second_square_side)
new_image = image(result_square)