我的目标是确定4个相交的点并进行透视变换。
给出一个计算出的矩形[x, y, w, h]
(从等高线得出)的列表,如何找到一篇论文的4条最佳线。
此thread使用minAreaRect
来查找非白色像素的区域,但在我的情况下,环境非常嘈杂,即使使用广泛的图像处理算法也无法消除所有白色点已应用。
这是我的处理管道
我现在正在考虑一种方法,首先找到4条线(左,上,右,下),然后进行去歪斜。
这可能吗?
理想的结果应该是这样,可以确定四个点。
更新1
尝试将矩形列表转换为点。在此阶段,我只能使用矩形,因为以前的操作不再返回轮廓。
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'