opencv将倾斜视图转换为平面视图

问题描述

这是我用USB相机拍摄的照片。我的相机与水平线成一个角度,目标在底部,平行和正交线界定矩形。便利贴是中心矩形的控制标记。

original view

point of view

然后,我将逐步处理一些步骤,以调整视图的“倾斜”并提取线条。 这是没有变换的行提取:

{“ type”:“ toGray”} => mat.cvtColor(cv4.COLOR_BGR2GRAY);

{“ type”:“ toBlur”,“ size”:10} => mat.gaussianBlur(new cv4.Size(size,size),0);

{“ type”:“ toCanny”,“ low”:50,“ high”:150} => mat.canny(low_threshold,high_threshold);

{“ type”:“ getLines”,“ rho”:1,“ theta”:0.017453292222222222,“ threshold”:15,“ min_line_length”:50,“ max_line_gap”:20}] =>让线=垫子。 houghLinesP(rho,theta,threshold,min_line_length,max_line_gap);

结果是:

result 1

现在,我想在提取线条之前使用“ warpAffine”功能校正视图的倾斜度。 我选择居中矩形的四个点,以构建两个“三点数组”(src,dst):

transformation scheme

matTransf = cv4.getAffineTransform( srcPoints,dstPoints);
resultMat = mat.warpAffine( matTransf,new cv4.Size( mat.cols,mat.rows));

结果如下:

final result

哪里出错了?

我也尝试过:

// four points at each corner of the rectangle,srcPoints for the  picture,and dstPoints for the theoric shape

// With getPerspectiveTransform
matTransf = cv4.getPerspectiveTransform( srcPoints,dstPoints);
resultMat = mat.warpPerspective( matTransf,mat.rows));

// With findHomography
let result = cv4.findHomography( srcPoints,dstPoints);
matTransf = result.homography;
resultMat = mat.warpPerspective( matTransf,mat.rows));

结果是:

findHomograhy and getPerspectiveTransform

最诚挚的问候。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)