Java 有什么能根据四个坐标点截取图片一部分的方法

2020-03-27 15:39:12 +08:00
 cccy0

我看基本全都是根据 起始点的 xy 坐标 和矩形的长宽来截取的, 有没有 通过四个坐标点 如 (x1,y1)(x2,y2)(x3,y3)(x4,y4) 来截取矩形的方法?

1944 次点击
所在节点    问与答
25 条回复
Xusually
2020-03-27 15:41:13 +08:00
你描述的其实是一回事儿啊。你四个点也需要截取矩形的话,起始点你选一个,其他长宽根据剩余的点就算出来了。
qiayue
2020-03-27 15:43:00 +08:00
根据四个点计算旋转角度,把图片旋转之后再截图
wangxiaoaer
2020-03-27 15:44:18 +08:00
外接矩形?
littleylv
2020-03-27 15:44:59 +08:00
楼主的意思是斜着截的那种?
不然给 4 个点和给起始+长宽,不是同一个概念么?
cccy0
2020-03-27 15:45:59 +08:00
@Xusually #1 说错了, 不一定是矩形, 可能是四个点围成的别的四边形
cccy0
2020-03-27 15:46:43 +08:00
@littleylv #4 可能这四个点围起来的四边形是斜着的
Mithril
2020-03-27 15:49:01 +08:00
做不到的。
你这四个点围出来的都不一定是个凸多边形。
多学学数学吧少年。。。
cccy0
2020-03-27 15:50:16 +08:00
@Mithril #7 一定是个四边形的, 不存在 俩点 xy 相同的这种情况
cccy0
2020-03-27 15:52:52 +08:00
![GPJbnI.png]( https://s1.ax1x.com/2020/03/27/GPJbnI.png)
可能是这样子斜着的
woodensail
2020-03-27 15:56:12 +08:00
楼上说的是不一定是个「凸」多边形。
也就是说你可能围出一个回力标的形状。
Xusually
2020-03-27 15:56:45 +08:00
@cccy0 #7 的意思是你只给四个点的话,可能不是一个凸多边形。比如你设想一个三角形的三个顶点,再加上一个三角形内部的一个点,这四个点就不能构成一个凸多边形。
cccy0
2020-03-27 15:58:29 +08:00
@woodensail #10 四个点是有顺序的
cccy0
2020-03-27 15:59:02 +08:00
@Xusually #11 四个点是有顺序的, 不存在这种情况
Mithril
2020-03-27 16:00:48 +08:00
@cccy0 四个独立点,不是一定可以围成凸多边形的。。。
你先百度一下凸多边形是个啥。
比如四个点,顺时针标记为 ABCD,那么多边形 ABCD 和多边形 ACBD 并不是同一个图形。同时你要定义好什么叫“内部”什么叫“外部”。
本质上是个图形学问题,跟你用什么语言没关系。
最简单的就是直接画个矩形的外接框,然后遍历这框里面所有点判断是否在多边形内。一般的话射线法就可以,不过同样有很多的细节情况需要考虑和处理。
luckyrayyy
2020-03-27 16:01:47 +08:00
倒是个有意思的问题,完全可以自己写个工具啊
cccy0
2020-03-27 16:04:07 +08:00
@Mithril #14 哦哦,. 数学不是很好
cccy0
2020-03-27 16:04:18 +08:00
cccy0
2020-03-27 16:04:46 +08:00
就是上面这个阿里云的 API, 需要把识别出来的人脸部分图片 截取出来
littleylv
2020-03-27 16:05:31 +08:00
根据四点,得到一个角度,把原图旋转这个角度,使其中两点的连线与 x 轴平行,就回到了正常的“原点+长宽”截图的情况了
@cccy0 #8
Xusually
2020-03-27 16:05:32 +08:00
@cccy0 如果确认只是矩形的话,最简单的办法楼上提到了,计算好旋转量,旋转到一边和 x/y 轴平行后用普通的裁切。
如果不一定是矩形,可能是某个普通的凸四边形的话,外接普通矩形定界,遍历,留意边界。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX