有什么方法去设定二维倾斜的矩形区域为感兴趣区域
-
举例:目标是红色块,但是其倾斜一定角度。我想设定感兴趣区域为黑色矩形框范围(图像本身是无黑色矩形框的,这里是为展示清晰),黑色矩形框四角坐标与长、宽已知。
我能想到的解决方法有两个:1.算出目标的旋转角度,然后将图像整个旋转一定角度后,设定(x,y,w,h);2.有没有什么可以直接匹配出倾斜矩形框,然后调用设定为感兴趣区域的。但是roi=(x,y,w,h)嘛,不明白倾斜状态下如何设定w和h。
请教各位大佬指点指点。
-
如果是非矩形的roi,需要设置mask参数,把一个黑白的mask当作参数。
-
感谢指点,但是上面的红色块目标只是举例, 我想设定的感兴趣区域并不是以已知对象位置为前提,而是以我想设定的感兴趣区域的四角坐标与倾斜角度为已知。(已知信息是由大目标上的定位块计算出的,根据相对坐标差与倾斜角去定位大目标上的小目标的大概位置)也就是想要实现的不是“识别”、而是“设定”,设定一个倾斜的感兴趣区域。
-
@iluw 在 有什么方法去设定二维倾斜的矩形区域为感兴趣区域 中说:
识别”、而是“设定”,设定一个倾斜的感兴趣区域
那你可以自己生成一个mask。
补充:我建议提问题的时候,从头说具体要做什么,因为很可能你的思路不对。
-
我的思路是第一步:利用find_blobs()去识别右侧蓝色圆点,然后利用blob.roundness()圆点筛选,再利用blob.enclosing_circle()去返回其中心坐标,于是得到中心点坐标,通过计算也可以得到这整个图像的倾斜角度;第二步:根据得到的坐标去分别给左侧标准颜色区与中间二维码区设定一个ROI。但是实际情况检测对象可能是倾斜一定角度的,左侧标准颜色区因面积限制排列紧凑,普通(x,y,w,h)可能导致某个ROI错误扩展到相邻的色块上,导致我获取的区域像素颜色信息出现干扰。第三步:根据标准颜色区的颜色信息作为“最终检测色块区”的环境偏差修正参数,从而获取最终检测色块区的颜色信息。
所以我想,如果可以自己根据算出来的每个色块的四角坐标(与定位块的相对位置是固定的)与倾斜角度去设定一个与对象倾斜角度相同的ROI就好了。
或者已知倾斜角后,把图像反向水平旋转矫正后再去设定ROI就可以避免倾斜ROI扩展到其他色块上了。
-
@kidswong999
image.binary()需要以颜色阈值范围作为判断标准,我的“最终检测色块”的颜色变化范围较大,可能和标准颜色区的某个标准色块颜色相近,这样可能会出现误把“最终检测色块”也包含进某个标准色块对应生成的mask里的情况,成为干扰因素。我想给每个标准色块和二维码设定ROI的初衷是尽量避免干扰因素,提高精确度。
-
第一步,先识别二维码,得到二维码的旋转角度。可以用四个角的坐标计算:qrcode.corners()
第二步,得到角度之后,旋转整个图像,把图像矫正水平。https://book.openmv.cc/example/04-Image-Filters/rotation-correction.html