python-3.x - 给定网格点查找对应的矩形坐标
问题描述
我已经使用 openCV 处理了图像以获得图像模式。图像模式分别由 2个水平和垂直线的Python列表表示。线条代表图案的边界。
fx = horizontal lines
fy = vertical lines
每个列表根据距图像左上角的距离按顺序排列。接下来,我使用以下方法来计算那些发现的线的交点:
def get_corners(fx,fy):
corners = []
for x_line in fx:
for y_line in fy:
corner = get_intersection(x_line,y_line)
if corner is not None:
corners.append(corner)
这应该给我corners
(格式化:)(x,y)
从左到右,从上到下的顺序。现在我想使用这些坐标从图像中裁剪出矩形。
列表的大小各corners
不相同,模式堆叠,这意味着它们有共同点。给定点列表, 和线列表的大小fx
和fy
:
如何使用点来裁剪矩形?
get_corners()
如果需要,请随时更改。
这是一个示例:模式检测在 2x2 中产生 4 个可能的矩形。这意味着列表points
中总共有 9 个值。
Points: [[],[],[],
[],[],[],
[],[],[]]
我可以使用这样的方法裁剪第一个矩形:
x1,y1 = points[0] #top left corner of the first pattern
x2,y2 = points[5] #bottom right corner of the first pattern
#rectangle
rectange = img[y1:y2,x1:x2]
解决方案
在这里在黑暗中刺伤,但这是你的中间形象吗?我还假设您要区分正方形和矩形,也就是说,您不需要正方形,只需要矩形。
如果是这种情况,我将使用以下步骤:
cnt_rectangles = 0
rectangle_list = []
for index in np.arange(len(points)-1):
p = points[index]
q = points[index+1]
if (p[0] == q[0]) || p[1] == q[1]
#the rectangle vertices must not have the same column or row. reject.
continue
else if abs(p[0] - q[0]) == abs(p[1] - q[1]):
#this is a square. reject
continue
else:
#this is a rectangle
cnt_rectangels+=1
rectangle_list.append((p, q))
推荐阅读
- c# - 如何使用 mstest 或 nunit 将 DataTable 用作我的测试用例的数据源?
- svn - 从 SVN 中的合并提交中恢复单个修订
- html - 很好地格式化输出并以 HTML 格式通过电子邮件发送
- android - altbeacon 以 10Hz 连续检测信标 RSSI 值
- bash - 如何在while循环条件下执行多个命令?
- javascript - 黑色背景向上滑动
- javascript - GOJS,如何将数据绑定到 group 属性?
- android - 将毫秒转换为像素
- php - CSV 过滤列和行并回显为 XML - - 我有工作代码来回显 HTML 表
- c# - Excel-DNA:取消注册正在运行的 Excel 实例中的方法