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

最近在做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版本的代码

import cv2
import numpy as np

markersX = 1           #X轴上标记的数量
markersY = 1           #EY轴上标记的数量   本例生成2行6列的格子
markerLength = 100#标记的长度,单位是像素
markerSeparation = 20#每个标记之间的间隔,单位像素
margins = markerSeparation #标记与边界之间的间隔
borderBits = 10 #标记的边界所占的bit位数
showImage = True


width = markersX * (markerLength + markerSeparation) - markerSeparation + 2 * margins
height =markersY * (markerLength + markerSeparation) - markerSeparation + 2 * margins


dictionary = cv2.aruco.Dictionary_get( cv2.aruco.DICT_6X6_250)
board = cv2.aruco.GridBoard_create(markersX, markersY, float(markerLength),float(markerSeparation), dictionary)
print(cv2.aruco_GridBoard.getGridSize(board))
#根据aruco的宽度自动生成合适的图片尺寸
img= cv2.aruco_GridBoard.draw(board,(width,height),1)
cv2.imwrite('frame.png', img)

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

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

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

import cv2
import numpy as np


markersX = 1           #X轴上标记的数量
markersY = 1            #EY轴上标记的数量   本例生成1x1的棋盘
markerLength = 100#标记的长度,单位是像素
markerSeparation = 20#每个标记之间的间隔,单位像素
margins = markerSeparation #标记与边界之间的间隔
borderBits = 10 #标记的边界所占的bit位数
showImage = True


width = markersX * (markerLength + markerSeparation) - markerSeparation + 2 * margins
height =markersY * (markerLength + markerSeparation) - markerSeparation + 2 * margins


dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_7X7_250)

#生成CharucoBoard
#board = cv2.aruco.CharucoBoard((3, 3), 0.015, 0.011, dictionary)
#生成aruco的格子,或者生成1个aruco,(1, 1)表示生成了1行1列
board = cv2.aruco.GridBoard((1, 1), 0.015, 0.011, dictionary)
#board = cv2.aruco.GridBoard((markersX, markersY), float(markerLength),float(markerSeparation), dictionary)
print(cv2.aruco.Board.getIds(board))


#	outSize[, img[, marginSize[, borderBits]
#img = cv2.aruco.Board.generateImage( board,(300,400), 0, 1)
img = cv2.aruco.Board.generateImage( board,(width,height), 0, 1)
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即可

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是AJAX?

AJAX是一种基于Web的技术,它允许Web应用程序在不刷新整个页面的情况下与服务器进行交互。通过AJAX,Web应用程序可以使用JavaScript向服务器发送异步请求并在不干扰用户的情况下更新页面的部分内容。 AJAX是Asynchronous JavaScript and XML的缩写。尽管…

nginx和tomcat负载均衡、静态分离

tomcat重要目录 bin 存放启动和关闭Tomcat脚本conf存放Tomcat不同的配置文件doc存放Tomcat文档lib存放Tomcat运行需要的库文件logs存放Tomcat执行时的log文件src存放Tomcat的源代码webappsTomcat的主要Web发布目录work存放jsp编译后产生的class文件 nginx负载均衡原理 nginx实…

【免配置】Qt的mingw使用编译opencv库

【免配置】Qt的mingw_32/64使用编译opencv库 网上在qt中使用mingw编译器配置opencv的时候,通常需要使用cmake编译工具,进行预先编译,步骤比较繁琐,这里推荐一个捷径,直接使用前人编译好的opencv库即可,避免…

面试题:完败的面试,被虐得体无完肤

经过上一轮的面试,我信心一下子就建立起来了,说巧不巧,前几周正好看到美团校招,想着试一下也不会怎样,就找了学长要了内推码,试着投递了一下,然后就通知周六参加笔试,结果惨不忍睹。…

节省时间、提升效率——Jetpack关爱你的摸鱼时间

JetPack Jetpack 是一个由 Google 提供的 Android 应用开发库集合。它旨在简化 Android 应用程序开发过程,提供一系列的库和工具,帮助开发者快速构建高质量、健壮、可扩展的 Android 应用。 Jetpack 包含多个组件,每个组件都专注于不同的功…

前端和后端分别是什么?

从技术工具来看: 前端:常见的 html5、JavaScript、jQuery... 后端:spring、tomcet、JVM,MySQL... 毕竟,如果这个问题问一个老后端,他掰掰手指可以给你罗列出一堆的名词来,比如设计模式、数据库…

《剑指 Offer--LeetCode 学习计划》-- 字符串

剑指 Offer 05. 替换空格&#xff08;Easy&#xff09; 题目描述 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。限制&#xff1a;0 < s 的长度 < 10000。 举例说明 示例 1&#xff1a; 输入&#xff1a;s “We are happy.”。输出&…

基于Java+SpringBoot+Vue的校园交友网站的设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

【全栈开发】基于Spring BootVueAndroid扫码授权登录

文章目录 一、引言二、设计1、移动端&#xff08;Android&#xff09;&#xff08;1&#xff09;库&#xff08;2&#xff09;依赖&#xff08;3&#xff09;使用 2、前端&#xff08;Vue&#xff09;&#xff08;1&#xff09;库&#xff08;2&#xff09;使用 3、后端&#x…

STM32 GPIO 详解

0. 实验平台 基于STM32F407ZG 1. GPIO 简介 1.1 简介 GPIO全称&#xff1a;General Purpose Input Output&#xff0c;即通用输入输出端口&#xff0c;一般用来采集外部器件的信息或者控制外部器件工作&#xff0c;即输入输出 1.2 STM32 的 GPIO 特点 不同型号&#xff0…

【玩转Docker小鲸鱼叭】虚拟化技术是什么?

到底什么是虚拟化&#xff1f; Docker 是一款基于容器虚拟化技术构建的软件&#xff0c;那到底什么虚拟化技术呢&#xff1f;在学习Docker之前&#xff0c;先简单了解下虚拟化技术。 虚拟化是云原生的实现基础&#xff0c;它能够帮助我们更加有效地利用物理计算机硬件。 虚拟…

黑客工具软件大全

黑客工具软件大全100套 给大家准备了全套网络安全梓料&#xff0c;有web安全&#xff0c;还有渗透测试等等内容&#xff0c;还包含电子书、面试题、pdf文档、视频以及相关的网络安全笔记 &#x1f447;&#x1f447;&#x1f447; 《黑客&网络安全入门&进阶学习包》 &a…

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

前提&#xff1a;需要安装navigation包&#xff0c;才可以运行move_base。 一.move_base路径规划包内容 二.更换全局路径规划算法&#xff08;A*、Dijkstra、DWA&#xff09; A*、Dijkstra属于全局路径规划、DWA属于局部路径规划。 1、move_base.launch move_base.launch文…

TCP可靠数据传输

TCP的可靠数据传输 1.TCP保证可靠数据传输的方法 TCP主要提供了检验和、序号/确认号、超时重传、最大报文段长度、流量控制等方法实现了可靠数据传输。 检验和 通过检验和的方式&#xff0c;接收端可以检测出来数据是否有差错和异常&#xff0c;假如有差错就会直接丢失该TC…

Matlab论文插图绘制模板第102期—分组填充箱线图

在之前的文章中&#xff0c;分享了Matlab箱线图的绘制模板&#xff1a; 填充箱线图的绘制模板&#xff1a; 分组箱线图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下分组填充箱线图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据…

NLP——Translation 机器翻译

文章目录 为什么翻译任务困难Statistical Machine TranslationAlignment 对齐summary Neural Machine Translation如何训练 Neural MTloss 设定Trainingdecoding at Test TimeExposure BiasExhaustive Search DecodingBeam Search Decoding什么时候解码停止summary Attention M…

异常数据检测 | Python实现支持向量机(SVM)的异常数据检测

文章目录 文章概述模型描述源码分享学习小结参考资料文章概述 SVM通常应用于监督式学习,但OneClassSVM算法可用于将异常检测这样的无监督式学习,它学习一个用于异常检测的决策函数其主要功能将新数据分类为与训练集相似的正常值或不相似的异常值。 模型描述 OneClassSVM的思…

为什么中国大公司不开发 Linux 桌面应用?

我们Linux平台C端的业务&#xff0c;也就是给大家提供的Linux的个人版本。目前真的是靠爱发电了&#xff0c;逃&#xff09; 更爱的是&#xff0c;我们不只是提供了X64平台&#xff0c;更是提供了Arm&#xff0c;MIPS64平台的二进制包。 估计国内在Linux平台首发新功能的桌面应…

asp.net高校食谱管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net高校食谱管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net高校食谱管理系统VS开发s…

Pytest自动化测试框架生成allure的报告

一、前言 最近通过群友了解到了allure这个报告&#xff0c;开始还不以为然&#xff0c;但还是逃不过真香定律。 经过试用之后&#xff0c;发现这个报告真的很好&#xff0c;很适合自动化测试结果的展示。下面说说我的探索历程吧。 选用的项目为Selenium自动化测试Pytest框架实…