|
|
@@ -243,7 +243,12 @@ class SkewDetector:
|
|
|
|
|
|
# fitLine 获取方向
|
|
|
# [vx, vy, x, y] normalized vector (vx,vy) and point (x,y)
|
|
|
- [vx, vy, x, y] = cv2.fitLine(cnt, cv2.DIST_L2, 0, 0.01, 0.01)
|
|
|
+ # cv2.fitLine 返回形状为 (1,1) 的数组,需显式转为标量
|
|
|
+ fit_result = cv2.fitLine(cnt, cv2.DIST_L2, 0, 0.01, 0.01)
|
|
|
+ vx = float(fit_result[0].item())
|
|
|
+ vy = float(fit_result[1].item())
|
|
|
+ x = float(fit_result[2].item())
|
|
|
+ y = float(fit_result[3].item())
|
|
|
|
|
|
# 找到轮廓在这个方向上的极值点
|
|
|
# 计算所有点在线上的投影
|
|
|
@@ -347,10 +352,10 @@ class SkewDetector:
|
|
|
return final_angle
|
|
|
|
|
|
except Exception as e:
|
|
|
- logger.warning(f"基于Mask的倾斜角度检测失败: {e}")
|
|
|
+ logger.error(f"基于Mask的倾斜角度检测失败: {e}")
|
|
|
import traceback
|
|
|
- logger.warning(traceback.format_exc())
|
|
|
- return 0.0
|
|
|
+ logger.error(traceback.format_exc())
|
|
|
+ raise e
|
|
|
|
|
|
def apply_deskew(
|
|
|
self,
|