gpt4 book ai didi

python - 如何将点从二维环的表面映射到矩形

转载 作者:行者123 更新时间:2023-12-05 03:27:44 46 4
gpt4 key购买 nike

enter image description here

我的问题是我有一条线(左边是红色的),我想将它转换成右图所示的东西。 (这是一个二值化图像,所以一切都是黑色的,除了这里的(红色)线在图片上是白色的。)黑点象征着灰色圆圈的中心。所以很明显,红线的点不能适合 1 个圆的边缘,但存在 2 个圆,r1,r2(半径)共同构成一个环,它的表面(图片上的灰色)可以包含所有红线的点。对于不同的图片,r1和r2可以不同,但​​保证r2>r1>0。

所以我需要一个映射,它可以将红线的点(x,y)(numpy矩阵)从灰色环转换为矩形。“没有公式”我会想象这就像在某个地方切割环,然后将其折叠成一个矩形。

最佳答案

正如@fmw42 敏锐地指出的那样,您可以使用cv2.warpPolar。这是一个例子。

import math

import cv2

ring = cv2.imread("so71416458-crop.png")
size = ring.shape[0] # assumes square image

outer_radius = size // 2
inner_radius_factor = 0.7 # 0.70 measured empirically from image

# Unwarp ring
warped = cv2.warpPolar(ring, (size, int(size * math.pi)), (outer_radius, outer_radius), outer_radius, 0)
# Rotate 90 degrees
straightened = cv2.rotate(warped, cv2.ROTATE_90_COUNTERCLOCKWISE)
# Crop to ring only
cropped = straightened[: int(straightened.shape[0] * (1 - inner_radius_factor)), :]

cv2.imwrite("so71416458-straight.png", cropped)

输入:so71416458-crop.png

enter image description here

此处明显的“摆动”是我草率裁剪的结果——圆环的中心点并不完全位于图像的中点。

输出:so71416458-straight.png

enter image description here

关于python - 如何将点从二维环的表面映射到矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71416458/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com