• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 有什么方法去设定二维倾斜的矩形区域为感兴趣区域



    • 0_1695208052174_75d14d7a-3e13-4109-864b-e344b3a38625-image.png
      举例:目标是红色块,但是其倾斜一定角度。我想设定感兴趣区域为黑色矩形框范围(图像本身是无黑色矩形框的,这里是为展示清晰),黑色矩形框四角坐标与长、宽已知。
      我能想到的解决方法有两个:1.算出目标的旋转角度,然后将图像整个旋转一定角度后,设定(x,y,w,h);2.有没有什么可以直接匹配出倾斜矩形框,然后调用设定为感兴趣区域的。但是roi=(x,y,w,h)嘛,不明白倾斜状态下如何设定w和h。
      请教各位大佬指点指点。



    • 如果是非矩形的roi,需要设置mask参数,把一个黑白的mask当作参数。

      https://docs.singtown.com/micropython/zh/latest/openmvcam/library/omv.image.html#image.Image.image.binary



    • 感谢指点,但是上面的红色块目标只是举例, 我想设定的感兴趣区域并不是以已知对象位置为前提,而是以我想设定的感兴趣区域的四角坐标与倾斜角度为已知。(已知信息是由大目标上的定位块计算出的,根据相对坐标差与倾斜角去定位大目标上的小目标的大概位置)也就是想要实现的不是“识别”、而是“设定”,设定一个倾斜的感兴趣区域。



    • @iluw有什么方法去设定二维倾斜的矩形区域为感兴趣区域 中说:

      识别”、而是“设定”,设定一个倾斜的感兴趣区域

      那你可以自己生成一个mask。

      补充:我建议提问题的时候,从头说具体要做什么,因为很可能你的思路不对。



    • 0_1695796857422_cbab5db2-9e39-452f-b867-bfdcca145836-image.png
      我的思路是第一步:利用find_blobs()去识别右侧蓝色圆点,然后利用blob.roundness()圆点筛选,再利用blob.enclosing_circle()去返回其中心坐标,于是得到中心点坐标,通过计算也可以得到这整个图像的倾斜角度;第二步:根据得到的坐标去分别给左侧标准颜色区与中间二维码区设定一个ROI。但是实际情况检测对象可能是倾斜一定角度的,左侧标准颜色区因面积限制排列紧凑,普通(x,y,w,h)可能导致某个ROI错误扩展到相邻的色块上,导致我获取的区域像素颜色信息出现干扰。第三步:根据标准颜色区的颜色信息作为“最终检测色块区”的环境偏差修正参数,从而获取最终检测色块区的颜色信息。
      所以我想,如果可以自己根据算出来的每个色块的四角坐标(与定位块的相对位置是固定的)与倾斜角度去设定一个与对象倾斜角度相同的ROI就好了。
      或者已知倾斜角后,把图像反向水平旋转矫正后再去设定ROI就可以避免倾斜ROI扩展到其他色块上了。



    • @kidswong999
      image.binary()需要以颜色阈值范围作为判断标准,我的“最终检测色块”的颜色变化范围较大,可能和标准颜色区的某个标准色块颜色相近,这样可能会出现误把“最终检测色块”也包含进某个标准色块对应生成的mask里的情况,成为干扰因素。我想给每个标准色块和二维码设定ROI的初衷是尽量避免干扰因素,提高精确度。



    • 第一步,先识别二维码,得到二维码的旋转角度。可以用四个角的坐标计算:qrcode.corners()

      https://docs.singtown.com/micropython/zh/latest/openmvcam/library/omv.image.html#image.qrcode.qrcode.corners

      第二步,得到角度之后,旋转整个图像,把图像矫正水平。https://book.openmv.cc/example/04-Image-Filters/rotation-correction.html