您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
- 内容介绍
- 文章标签
- 相关推荐
本文共计712个文字,预计阅读时间需要3分钟。
前言:最近在工程中需要用到从RotatedRect中提取图形,并保存为Mat后进行后续处理。发现OpenCV文档中没有直接这个API。最初想到的方案是将整个图像进行相应的旋转,然后从中裁剪出正方形,但这种方法似乎不太高效。
前言:最近在工程中需要用到截取RotatedRect中的图形,保存为Mat做后续处理。发现opencv文档中没有这个api,最开始想到的方案是将整张图片进行相应的旋转,然后再从中截取正矩形,但是我们要获取的是部分区域,将整张图片进行旋转会造成很多的资源浪费。所以需要自行实现一个旋转矩形的方案。
实现方法
原理是利用向量空间变换,如图
通过
Point2f[] points=rotatedRect.Points();
可获取RotatedRect四个端点的坐标。先选定一个点为输出Mat左上端点,这里采取的是离原图左上角最近的端点(即x2+y2最小)。然后再选取相邻的2个端点,作向量Vx及Vy。这里可以根据需求来选定Vx和Vy的方向,比如要求输出Mat的Width大于Height,那就选定长的一边为Vx。这里直接选定左上端点到顺时针方向的端点的向量为Vx,即如图所示。
本文共计712个文字,预计阅读时间需要3分钟。
前言:最近在工程中需要用到从RotatedRect中提取图形,并保存为Mat后进行后续处理。发现OpenCV文档中没有直接这个API。最初想到的方案是将整个图像进行相应的旋转,然后从中裁剪出正方形,但这种方法似乎不太高效。
前言:最近在工程中需要用到截取RotatedRect中的图形,保存为Mat做后续处理。发现opencv文档中没有这个api,最开始想到的方案是将整张图片进行相应的旋转,然后再从中截取正矩形,但是我们要获取的是部分区域,将整张图片进行旋转会造成很多的资源浪费。所以需要自行实现一个旋转矩形的方案。
实现方法
原理是利用向量空间变换,如图
通过
Point2f[] points=rotatedRect.Points();
可获取RotatedRect四个端点的坐标。先选定一个点为输出Mat左上端点,这里采取的是离原图左上角最近的端点(即x2+y2最小)。然后再选取相邻的2个端点,作向量Vx及Vy。这里可以根据需求来选定Vx和Vy的方向,比如要求输出Mat的Width大于Height,那就选定长的一边为Vx。这里直接选定左上端点到顺时针方向的端点的向量为Vx,即如图所示。

