有没有什么规则,最好有公式什么的;
或者推理过程是怎样的;
有人有做过类似图形处理的吗?
8 个解决方案
#1
1. 首先把 ABCD矩形画上等距的方格,很容易做吧, 比如AB边m个等距点, AC边n个等距点,则有m*n个格子,不是方格也没关系。每个
2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格
3. 两张图的格子有一一对应关系的。 opencv里面可以做映射!
2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格
3. 两张图的格子有一一对应关系的。 opencv里面可以做映射!
#2
用OpenCV吧,知道了两幅图的四个对应点,OpenCV里面有两个函数可以实现直接变换
#3
嗯,兄弟,感谢你这么认真的回答我的问题,虽然答案可能不是我想要的, 但是我已经从里面得到了启发,我是写底层代码的,所有的东西都要自己写,调不了庞大的库什么的,而且效率也太关键了;
再次感谢;
再次感谢;
#4
感谢blowlow
#5
openCV里面透视变换,通过两个数组计算出变换矩阵。然后进行变换
getPerspectiveTransform(srcQuad,dstQuad);
warpPerspective()
你去查一下这两个函数就知道了。
getPerspectiveTransform(srcQuad,dstQuad);
warpPerspective()
你去查一下这两个函数就知道了。
#6
如果都是凸四边形,直接对角线一下,变成2个三角形,然后map
想到一个方法就是,对每个三角形,用2个参数,u,v
u是点D在底边AB上的滑动,从0到1
v是点E在第三点C和D连线上的滑动,也从0到1,
这样E(u,v)就是所求,2个三角形中采用相同的(u,v)就能找到对应点了.
想到一个方法就是,对每个三角形,用2个参数,u,v
u是点D在底边AB上的滑动,从0到1
v是点E在第三点C和D连线上的滑动,也从0到1,
这样E(u,v)就是所求,2个三角形中采用相同的(u,v)就能找到对应点了.
#7
blowlow
#8
回答问题真精辟,还有图的!
赞!
#1
1. 首先把 ABCD矩形画上等距的方格,很容易做吧, 比如AB边m个等距点, AC边n个等距点,则有m*n个格子,不是方格也没关系。每个
2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格
3. 两张图的格子有一一对应关系的。 opencv里面可以做映射!
2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格
3. 两张图的格子有一一对应关系的。 opencv里面可以做映射!
#2
用OpenCV吧,知道了两幅图的四个对应点,OpenCV里面有两个函数可以实现直接变换
#3
嗯,兄弟,感谢你这么认真的回答我的问题,虽然答案可能不是我想要的, 但是我已经从里面得到了启发,我是写底层代码的,所有的东西都要自己写,调不了庞大的库什么的,而且效率也太关键了;
再次感谢;
再次感谢;
#4
感谢blowlow
#5
openCV里面透视变换,通过两个数组计算出变换矩阵。然后进行变换
getPerspectiveTransform(srcQuad,dstQuad);
warpPerspective()
你去查一下这两个函数就知道了。
getPerspectiveTransform(srcQuad,dstQuad);
warpPerspective()
你去查一下这两个函数就知道了。
#6
如果都是凸四边形,直接对角线一下,变成2个三角形,然后map
想到一个方法就是,对每个三角形,用2个参数,u,v
u是点D在底边AB上的滑动,从0到1
v是点E在第三点C和D连线上的滑动,也从0到1,
这样E(u,v)就是所求,2个三角形中采用相同的(u,v)就能找到对应点了.
想到一个方法就是,对每个三角形,用2个参数,u,v
u是点D在底边AB上的滑动,从0到1
v是点E在第三点C和D连线上的滑动,也从0到1,
这样E(u,v)就是所求,2个三角形中采用相同的(u,v)就能找到对应点了.
#7
blowlow
#8
回答问题真精辟,还有图的!
赞!