Linux Ubuntu下安装libdmtx并在Linux下配置OpenCV和libdmtx的Cmakelist,同时对Data Matric码进行解码
前言
libdmtx是一个开源的二维码解码工具,本文记录在ROS下以及直接使用g++编译器,配置和使用该工具对DM码进行解码的过程。
一、Libdmtx的下载安装
下载地址 GitHub - dmtx/libdmtx: libdmtx Library
先运行autogen.sh,输入如下命令:
./autogen.sh
运行后就出现了configure这个文件,然后依次输入如下命令安装:
./configuremakesudo make install
二、编写测试代码
1.编写测试代码exampleDecode.cpp
代码如下:
#include "opencv2/core.hpp"
#include <opencv2/highgui.hpp>
#include "opencv2/imgproc.hpp"
#include "opencv2/videoio.hpp"
#include <dmtx.h>
#include <iostream>
#include <stdio.h>
#include <sys/time.h>
using namespace cv;
using namespace std;int main(int argc, char *argv[])
{struct timezone tz;struct timeval tv;struct timezone tz1;struct timeval tv1;gettimeofday(&tv,&tz);cout << "micronsecond : \t" << tv.tv_sec*1000 +tv.tv_usec/1000 << endl;cv::Mat matImg = cv::imread("/home/{yourname}/catkin_ws/123.JPG", -1);//选择要解码的图片,这里确保有个DM码的图片if(matImg.empty()){return -1;}cv::Size size;cv::Point pt;matImg.locateROI(size, pt);DmtxImage *img;DmtxDecode *dec;DmtxRegion *reg;DmtxMessage *msg;img = dmtxImageCreate(matImg.data, size.width, size.height, DmtxPack24bppRGB);assert(img != NULL);dec = dmtxDecodeCreate(img, 1);assert(dec != NULL);reg = dmtxRegionFindNext(dec, NULL);if(reg != NULL){msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);if(msg != NULL){fputs("output: \"", stdout);fwrite(msg->output, sizeof(unsigned char), msg->outputIdx, stdout);fputs("\"\n", stdout);dmtxMessageDestroy(&msg);}dmtxRegionDestroy(®);}dmtxDecodeDestroy(&dec);dmtxImageDestroy(&img);gettimeofday(&tv1,&tz1);cout << "micronsecond1 : \t" << tv1.tv_sec*1000 +tv1.tv_usec/1000 << endl;cout << "time(us): \t" << tv1.tv_sec*1000000 +tv1.tv_usec - tv.tv_sec*1000000 -tv.tv_usec << endl;return 0;
}
把以上代码文件放在你的src文件夹下
2.修改Cmakelist文件
修改如下:
cmake_minimum_required(VERSION 3.0.2)
project(cartographer_dev)find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgs)find_package(OpenCV REQUIRED COMPONENTSopencv_coreopencv_imgprocopencv_imgcodecsCONFIG
)
include_directories(${OpenCV_INCLUDE_DIRS})catkin_package(
# INCLUDE_DIRS include
# LIBRARIES cartographer_dev
# CATKIN_DEPENDS roscpp rospy std_msgs
# DEPENDS system_lib
)include_directories(
# include${catkin_INCLUDE_DIRS}
)add_executable(exampleDecode src/exampleDecode.cpp)target_link_libraries(exampleDecode ${OpenCV_LIBS})
target_link_libraries(exampleDecode dmtx)
target_link_libraries(exampleDecode ${catkin_LIBRARIES})
在你的工作空间
source devel/setup.bash
一下然后
catkin_make
然后运行以下
rosrun {your package name} exampleDecode
就可以解码和看出解码时间了。
3.直接通过g++编译器编译
在命令行输入以下命令
g++ exampleDecode.cpp -o exampleDecode `pkg-config --cflags --libs opencv libdmtx`
Cmakelist文件如下
# cmake needs this line
cmake_minimum_required(VERSION 3.1)# Define project name
project(opencv_example_project)# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV 3.2.0 REQUIRED)
#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libdmtx)# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS " config: ${OpenCV_DIR}")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")# Declare the executable target built from your sources
add_executable(exampleDecode exampleDecode.cpp)# Link your application with OpenCV libraries
target_link_libraries(exampleDecode PRIVATE ${OpenCV_LIBS})
输入以下命令
./exampleDecode
运行结果如下
总结
安装ROS后一般都同时安装了OpenCV,不建议再重新安装更高版本的OpenCV,否则会出现各种问题。
参考文献
Linux下使用libdmtx识别图片上的datamatrix_小袋鼠_Vicky的博客-CSDN博客_libdmtx 识别率低
Linux Ubuntu下安装libdmtx并在Linux下配置OpenCV和libdmtx的Cmakelist,同时对Data Matric码进行解码相关推荐
- 深度linux腾讯视频,在UOS/Deepin 20/Ubuntu 18.04下安装腾讯视频Linux版的方法
要想在UOS.Deepin 20.Ubuntu 18.04操作系统下安装腾讯视频Linux版,必须先去下载Tenvideo_universal_1.0.10_amd64.deb包,然后使用dpkg命令 ...
- linux 商业游戏,Ubuntu下安装试玩原生Linux版商业游戏Braid
这款原生Linux版商业游戏Braid国外出售价大约在80美元左右.每年在Linux平台上发布的原生商业游戏是屈指可数,而且这些游戏的质量也是参差不齐. 不过这款原生Linux版商业游戏Braid还是 ...
- Win7下安装Ubuntu11.10(解决linux try(hd0,0):NTFS5:no ang0引导问题)
Win7下安装Ubuntu11.10(解决linux try(hd0,0):NTFS5:no ang0引导问题) 参考文章: (1)Win7下安装Ubuntu11.10(解决linux try(hd0 ...
- 在openSUSE-Leap-15.4-DVD-x86_64下安装网易云音乐linux客户端
在openSUSE-Leap-15.4-DVD-x86_64下安装网易云音乐linux客户端 打开https://software.opensuse.org/--版本不用选择保持ALL Distrib ...
- Linux系统的安装和Android编译环境的配置
Linux系统的安装和Android编译环境的配置 亲测Android8.1-Android10.0可用 电脑硬件配置 安装Linux系统 配置Android编译环境 常见编译报错 亲测Android ...
- Linux入门第五集!MySQL8在Linux上的安装!MySQL的Linux资源分享!
Linux入门第五集!MySQL8在Linux上的安装!MySQL的Linux资源分享! 一.Mysql的Linux版本下载! 博主采用的是mysql-8.0.25-1.el7.x86_64.rpm- ...
- linux18.2安装界面,Ubuntu 18.10下安装Grub Customizer 5.1.0配置grub2图形化界面
配置Grub2/burg引导装载程序Grub Customizer 5.1.0新增加对Ubuntu 18.10的支持,我们可以用PPA源来安装,同时还支持Ubuntu 18.04.16.04.14.0 ...
- TensorFlow工作笔记001---Centos7.3下安装TensorFlow最新版本,基于python2.7.5的,没有编译TensorFlow的源码
技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 Centos7.3下安装TensorFlow最新版本,基于python2.7.5的,没有编译TensorFlow的源码, ...
- linux下安装sbt_如何在Linux上安装SBT
linux下安装sbt 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you how to install ...
最新文章
- JavaScrip(一)JavaScrip的写法
- shanghai road map
- Android 隐藏底部三个虚拟按键
- 在java中图片随机播放_java-以相同顺序随机播放多个文件
- vb.net json上传服务器_vue项目编译后自动上传,告别繁琐的操作
- Nashorn Multithreading and MT-safety
- 用面向对象思想设计奥赛罗游戏
- cocos 节点坐标和世界坐标转换 个人理解与应用
- TPScan一键ThinkPHP漏洞检测工具使用
- excel合并计算机操作,Excel如何快速合并多个单元格的内容?
- 恒生电子2018秋招笔经面经(开发岗)
- chloe.mysql 源码_AceFx-基于Nfine的Chloe官网及后台源码
- zabbix离线安装
- STM32F103时钟系统
- 白度云下载到存储卡的视频看不了_苹果手机从百度网盘下载的视频如何保存到相册,还有不知道的吗?...
- 《数据结构教程(李春葆主编 第五版)》第七章源代码—树和二叉树
- Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
- 笔记本 触摸板无法使用 解决办法
- 做回归分析时import ConvergenceWarning出错的问题
- Registration Code
热门文章
- input file多选 multiple
- python打蛇_页高速缓存(下)_Linux系统编程第 3 期:文件I/O缓存与内存映射视频课程_嵌入式开发视频-51CTO学院...
- 实现算命测八字获取节日的工具类-Lunar
- redhat linux vim文本编辑工具的笔记
- C盘满了怎么分析C盘使用情况 找出C盘大文件
- 【DL】第 7 章 :用于音乐生成的Transformers和 MuseGAN
- 微信小程序预览二进制流文件
- 进制转换二进制转八进制_将二进制数制转换为八进制数制
- 我眼里的新人“七宗罪”
- java计算机毕业设计中学生作文大赛管理平台源码+mysql数据库+系统+部署+lw文档