当前位置:   article > 正文

Aruco标签/二维码生成opencv-python_aruco二维码

aruco二维码

最近在做Aruco的时候发现,生成标签的时候死活不成功,后来发现是版本的问题

因为现在直接运行pip install opencv-contrib-python命令的时候发现,直接安装的版本是opencv-contrib-python==4.7.0.72

下面分别提供4.6版本和4.7版本下生成标签的代码

1 、opencv-contrib-python==4.6版本的代码

2、opencv-contrib-python==4.7版本的代码

3、算法总结比对

在版本不同时,需要将对应的函数进行更换

4.6版本的函数

4.7版本中的函数

1

cv2.aruco.GridBoard_create

cv2.aruco.GridBoard

2

cv2.aruco.Dictionary_get

cv2.aruco.getPredefinedDictionary

3

cv2.aruco_GridBoard.draw

cv2.aruco.Board.generateImage

1 、opencv-contrib-python==4.6版本的代码

  1. import cv2
  2. import numpy as np
  3. markersX = 1 #X轴上标记的数量
  4. markersY = 1 #EY轴上标记的数量 本例生成2行6列的格子
  5. markerLength = 100#标记的长度,单位是像素
  6. markerSeparation = 20#每个标记之间的间隔,单位像素
  7. margins = markerSeparation #标记与边界之间的间隔
  8. borderBits = 10 #标记的边界所占的bit位数
  9. showImage = True
  10. width = markersX * (markerLength + markerSeparation) - markerSeparation + 2 * margins
  11. height =markersY * (markerLength + markerSeparation) - markerSeparation + 2 * margins
  12. dictionary = cv2.aruco.Dictionary_get( cv2.aruco.DICT_6X6_250)
  13. board = cv2.aruco.GridBoard_create(markersX, markersY, float(markerLength),float(markerSeparation), dictionary)
  14. print(cv2.aruco_GridBoard.getGridSize(board))
  15. #根据aruco的宽度自动生成合适的图片尺寸
  16. img= cv2.aruco_GridBoard.draw(board,(width,height),1)
  17. cv2.imwrite('frame.png', img)

上面的代码运行结果如下图 

2 、opencv-contrib-python==4.7版本的代码

下面的代码是参考的上面的代码进行修改

  1. import cv2
  2. import numpy as np
  3. markersX = 1 #X轴上标记的数量
  4. markersY = 1 #EY轴上标记的数量 本例生成1x1的棋盘
  5. markerLength = 100#标记的长度,单位是像素
  6. markerSeparation = 20#每个标记之间的间隔,单位像素
  7. margins = markerSeparation #标记与边界之间的间隔
  8. borderBits = 10 #标记的边界所占的bit位数
  9. showImage = True
  10. width = markersX * (markerLength + markerSeparation) - markerSeparation + 2 * margins
  11. height =markersY * (markerLength + markerSeparation) - markerSeparation + 2 * margins
  12. dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_7X7_250)
  13. #生成CharucoBoard
  14. #board = cv2.aruco.CharucoBoard((3, 3), 0.015, 0.011, dictionary)
  15. #生成aruco的格子,或者生成1个aruco,(1, 1)表示生成了1行1列
  16. board = cv2.aruco.GridBoard((1, 1), 0.015, 0.011, dictionary)
  17. #board = cv2.aruco.GridBoard((markersX, markersY), float(markerLength),float(markerSeparation), dictionary)
  18. print(cv2.aruco.Board.getIds(board))
  19. # outSize[, img[, marginSize[, borderBits]
  20. #img = cv2.aruco.Board.generateImage( board,(300,400), 0, 1)
  21. img = cv2.aruco.Board.generateImage( board,(width,height), 0, 1)
  22. cv2.imwrite('frame.png', img)

上面的代码运行结果见下图

上面代码中还有生成CharucoBoard代码,去掉注释即可按需生成

注意区分三种格式,见下图

 3、算法总结比对

在版本不同时,需要将对应的函数进行更换

4.6版本的函数

4.7版本中的函数

1

cv2.aruco.GridBoard_create

cv2.aruco.GridBoard

2

cv2.aruco.Dictionary_get

cv2.aruco.getPredefinedDictionary

3

cv2.aruco_GridBoard.draw

cv2.aruco.Board.generateImage

 此外,还需要特别注意的是

在4.6版本中,需要安装的是opencv-contrib-python

在4.7版本中,已经将aruco模块放到了主库中,所以仅需安装opencv-python即可,引用的时候也无需单独引用aruco,只引用cv2即可

版权声明:未经允许请勿转载

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/609570
推荐阅读
相关标签
  

闽ICP备14008679号