如何解决opencv将倾斜视图转换为平面视图
这是我用USB相机拍摄的照片。我的相机与水平线成一个角度,目标在底部,平行和正交线界定矩形。便利贴是中心矩形的控制标记。
然后,我将逐步处理一些步骤,以调整视图的“倾斜”并提取线条。 这是没有变换的行提取:
{“ 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);
现在,我想在提取线条之前使用“ warpAffine”功能校正视图的倾斜度。 我选择居中矩形的四个点,以构建两个“三点数组”(src,dst):
matTransf = cv4.getAffineTransform( srcPoints,dstPoints);
resultMat = mat.warpAffine( matTransf,new cv4.Size( mat.cols,mat.rows));
哪里出错了?
我也尝试过:
// 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));
最诚挚的问候。
解决方法
变换不是亲和力,而是单应性描述的透视图。在图像中选择一个物理矩形的四个角,将它们映射到矩形中具有与物理矩形相同的长宽比的点,从它们估计单应性(findHomography),最后变形(warpPerspective)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。