Python 如何从矩形列表中标识直线
我的目标是确定4个相交点并进行透视变换 给定一个计算矩形列表Python 如何从矩形列表中标识直线,python,opencv,image-processing,Python,Opencv,Image Processing,我的目标是确定4个相交点并进行透视变换 给定一个计算矩形列表[x,y,w,h](从等高线导出),如何找到一张纸的4条最佳线条 这使用minareact查找非白色像素区域,但在我的例子中,环境非常嘈杂,即使应用了广泛的图像处理算法,也不可能消除所有白点 这是我的处理管道 灰度和二值化 应用形态学操作删除不太可能的字符 使用一组规则(实验值)查找轮廓 我现在正在考虑一种方法,首先找到4条线(左、上、右和下),然后进行反求,得到4个相交点 这可能吗 理想的结果是这样的,可以确定四点 更新1
[x,y,w,h]
(从等高线导出),如何找到一张纸的4条最佳线条
这使用minareact
查找非白色像素区域,但在我的例子中,环境非常嘈杂,即使应用了广泛的图像处理算法,也不可能消除所有白点
这是我的处理管道
- 灰度和二值化
- 应用形态学操作删除不太可能的字符
- 使用一组规则(实验值)查找轮廓
def rectsToPoints(rects):
points = []
for x1, y1, x2, y2 in rects:
x, y, w, h = x1, y1, x2-x1, y2-y1
points.append([
(x, y),
(x+w, y),
(x, y+h),
(x+w, y+h)
])
return np.array(points, dtype=np.int32)
points = rectsToPoints(rects)
minRect = cv2.minAreaRect(points)
类型错误
cv2.error: OpenCV(3.4.3) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/convhull.cpp:137: error: (-215:Assertion failed) total >= 0 && (depth == CV_32F || depth == CV_32S) in function 'convexHull'
请参阅。将每个矩形的四个顶点放在一个点列表中,并使用
minareact
@Miki让我试试,这四个点是否需要遵循顺序?@zindarod您共享的答案很好!它使用4个最大的轮廓作为参考点,对吗?但在我的例子中,我无法提取这四个相关的参数contour@RexLow不需要点积分