CN109598161B - 识别二维码的方法、装置、终端设备及存储介质 - Google Patents
识别二维码的方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN109598161B CN109598161B CN201810948442.7A CN201810948442A CN109598161B CN 109598161 B CN109598161 B CN 109598161B CN 201810948442 A CN201810948442 A CN 201810948442A CN 109598161 B CN109598161 B CN 109598161B
- Authority
- CN
- China
- Prior art keywords
- dimensional code
- frame data
- threads
- camera frame
- parallel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
- G06K7/10712—Fixed beam scanning
- G06K7/10722—Photodetector array or CCD scanning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Studio Devices (AREA)
Abstract
本公开实施例公开了一种识别二维码的方法、装置、终端设备及存储介质。该方法包括:获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;基于所述并行识别处理,确定二维码识别结果。本公开实施例实现了对二维码的并行识别处理,提高了二维码扫描识别的效率。
Description
技术领域
本公开实施例涉及二维码识别技术,尤其涉及一种识别二维码的方法、装置、终端设备及存储介质。
背景技术
二维码又称二维条码,是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理。
现有技术中,在进行二维码识别时,每次向系统请求获取一帧相机帧数据,然后调用二维码库解析二维码,如果成功则返回结果,如果失败,需要重新向系统请求获取下一帧相机帧数据,直到检测到二维码并且识别成功为止,二维码扫描识别的效率较低。
发明内容
有鉴于此,本公开实施例提供一种识别二维码的方法、装置、终端设备及存储介质,以提高二维码扫描识别的效率。
第一方面,本公开实施例提供了一种识别二维码的方法,所述方法包括:
获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;
基于所述并行识别处理,确定二维码识别结果。
可选的,基于所述并行识别处理,确定二维码识别结果,包括:
在所述至少两个线程中如果有线程识别成功,则获取二维码识别结果,并停止其他线程执行二维码的识别处理,并停止获取相机帧数据。
可选的,将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理,包括:
将获取到的至少两帧相机帧数据分配给至少两个二维码解码任务,并将所述至少两个二维码解码任务加入队列;
将队列中的至少两个二维码解码任务发送给线程池中的至少两个线程,通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理。
可选的,停止其他线程执行二维码的识别处理,包括:
关闭所述线程池。
可选的,所述线程池大小与CPU核数相匹配。
可选的,在通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理之后,还包括:
在二维码解码任务输出的原子布尔变量为真时,确定该二维码解码任务对应的线程对二维码识别成功。
可选的,获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理,包括:
获取一帧相机帧数据,将获取到的相机帧数据分配给一个线程进行二维码的识别处理,同时获取另一帧相机帧数据。
第二方面,本公开实施例还提供了一种识别二维码的装置,所述装置包括:
并行处理模块,用于获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;
识别结果确定模块模块,用于基于所述并行识别处理,确定二维码识别结果。
可选的,所述识别结果确定模块具体用于:
在所述至少两个线程中如果有线程识别成功,则获取二维码识别结果,并停止其他线程执行二维码的识别处理,停止获取相机帧数据。
可选的,所述并行处理模块包括:
相机帧分配单元,用于将获取到的至少两帧相机帧数据分配给至少两个二维码解码任务,并将所述至少两个二维码解码任务加入队列;
并行识别单元,用于将队列中的至少两个二维码解码任务发送给线程池中的至少两个线程,通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理。
可选的,所述停止模块包括:
线程池关闭单元,用于关闭所述线程池。
可选的,所述线程池大小与CPU核数相匹配。
可选的,还包括:
识别成功确定模块,用于在通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理之后,在二维码解码任务输出的原子布尔变量为真时,确定该二维码解码任务对应的线程对二维码识别成功。
可选的,所述并行处理模块具体用于:
获取一帧相机帧数据,将获取到的相机帧数据分配给一个线程进行二维码的识别处理,同时获取另一帧相机帧数据。
第三方面,本公开实施例还提供了一种终端设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
摄像头,用于采集相机帧;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本公开任一实施例所述的识别二维码的方法。
第四方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本公开任一实施例所述的识别二维码的方法。
本公开实施例的技术方案,通过获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理,基于所述并行识别处理,确定二维码识别结果,从而实现了对二维码的并行识别处理,提高了二维码扫描识别的效率。
附图说明
图1是本公开实施例提供的一种识别二维码的方法的流程图;
图2是本公开实施例提供的一种识别二维码的方法的流程图;
图3是本公开实施例中的执行二维码解码任务的流程示意图;
图4是本公开实施例提供的一种识别二维码的装置的结构示意图;
图5是本公开实施例提供的一种终端设备的硬件结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部内容。
图1是本公开实施例提供的一种识别二维码的方法的流程图,本实施例可适用于快速识别二维码的情况,该方法可以由识别二维码的装置来执行,该装置可以由软件和/或硬件来实现,一般可集成在手机或平板电脑等终端设备中。如图1所示,该方法具体包括如下步骤:
步骤110,获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理。
由于二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在对二维码识别时,需要用户将摄像头对准二维码并采集二维码的图像,因此,需要打开摄像头并通过摄像头采集二维码扫描框内的图像作为相机帧数据。
获取到一帧相机帧数据后,立即获取另一帧相机帧数据,即不必等到对获取到的一帧相机帧数据进行二维码识别并在识别失败时获取下一帧,而是可以直接在获取到一帧相机帧数据后在对该帧相机帧数据处理的同时获取另一帧相机帧数据,以对多帧相机帧数据进行二维码的并行识别处理。在二维码识别成功之前,一直在获取相机帧数据,直到二维码识别成功,才停止获取相机帧数据。
其中,二维码是一种比一维码更高级的条码格式,一维码只能在一个方向(一般是水平方向)上表达信息,而二维码在水平和垂直方向都可以存储信息。一维码只能由数字和字母组成,而二维码能存储汉字、数字和图片等信息,因此,二维码存储信息较多,应用领域较广。在许多种类的二维条码中,常用的码制有:Data Matrix、MaxiCode、Aztec、QR Code、Vericode、PDF417、Ultracode、Code 49、Code 16K等。常见的码制为QR(Quick Response)Code。
对获取到的至少两帧相机帧数据利用至少两个线程进行并行识别处理,示例性的,可以将获取到的至少两帧相机帧数据中的一帧相机帧数据分配给一个线程进行识别处理,将至少两帧相机帧数据中的另一帧相机帧数据分配给另一个线程进行识别处理,即可以是一帧相机帧数据对应一个线程,当然,还可以是其他情况,如两帧相机帧数据对应一个线程,这种情况下,也是需要多个线程进行并行识别处理的,每个线程可以对应两帧相机帧数据,在一个线程下,相机帧数据可以进行排队,即在该线程对一帧相机帧数据识别处理完成后,再对另一帧相机帧数据进行识别处理,多个线程之间对相机帧数据进行并行识别处理。每个线程在执行过程中相互之间没有影响,即多个线程之间是并行处理的。
每个线程对二维码进行识别处理时,首先需要对相机帧数据进行灰度化处理和二值化处理,使得相机帧成为二值化图像,然后进行二维码检测,检测二维码的定位点信息,以定位到二维码在相机帧数据中的位置,之后调用二维码库进行二维码的解码处理,获取二维码信息。其中,图像的灰度化处理是让图像的像素点矩阵中的每一个像素点都满足下面的关系:R=G=B,就是红色变量的值、绿色变量的值和蓝色变量的值,这三个值相等,此时的这个值叫做灰度值。图形的二值化处理就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),也就是让整个图像呈现只有黑和白的效果。
可选的,获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理,包括:
获取一帧相机帧数据,将获取到的相机帧数据分配给一个线程进行二维码的识别处理,同时获取另一帧相机帧数据。
相关技术中,由于是串行处理,如果处理一帧相机帧数据的时间较长,会阻碍对下一帧相机帧数据的处理,如上一帧数据帧中没有二维码而下一帧相机帧中有二维码时,如果上一帧处理时间较长,则导致二维码扫描识别的效率较低。而本公开实施例在获取到一帧相机帧数据后,通过一个线程对该相机帧数据进行识别处理,同时获取另一帧相机帧数据,而不必等到前一帧相机帧数据识别失败时才获取另一帧相机帧数据,实现了对二维码的并行识别处理,大大提高了识别效率。
步骤120,基于所述并行识别处理,确定二维码识别结果。
在所述至少两个线程进行二维码的并行识别处理时,如果有线程识别成功,则可以直接获取该线程的处理结果,确定二维码识别结果。
可选的,在所述至少两个线程中如果有线程识别成功,则获取二维码识别结果,并停止其他线程执行二维码的识别处理,停止获取相机帧数据。
若所述至少两个线程中一个线程识别二维码成功,即识别到合法的二维码,则返回标记识别成功的值和/或对应的二维码信息,得到二维码识别结果,这时停止其他线程对二维码识别处理的执行,并停止获取相机帧数据,实现了对二维码的并行识别处理,并在得到二维码识别结果时及时释放资源。
本实施例的技术方案,通过获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理,基于所述并行识别处理,确定二维码识别结果,从而实现了对二维码的并行识别处理,提高了二维码扫描识别的效率。
图2是本公开实施例提供的一种识别二维码的方法的流程图,本实施例可以与上述一个或多个实施例中各个可选方案结合。在一个实施方式中,对至少两个线程的维护,可以预先设置并发线程的数量,可以通过信号量(Semaphore)来维护,在并发线程的数量达到预设的数量时,不再开启并发线程,其中,信号量有时被称为信号灯,是在多线程环境下使用的一种设施,它负责协调各个线程,以保证它们能够正确、合理的使用公共资源。除了通过信号量来进行控制外,在另一实施方式中,控制并发线程的数量更加有效的方式是通过线程池来维护多个线程。本实施例主要是以通过线程池来维护多个线程为例进行说明,如图2所示,该方法具体包括如下步骤:
步骤210,获取至少两帧相机帧数据。
步骤220,将获取到的至少两帧相机帧数据分配给至少两个二维码解码任务,并将所述至少两个二维码解码任务加入队列。
其中,可以预先建立二维码解码任务,设置二维码解码任务的输入是相机帧数据,二维码解码任务内部进行二维码解码,即二维码识别,如果识别失败则任务结束,如识别成功则返回标记成功的值。队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头。
在获取到一帧相机帧数据后,将该帧相机帧数据输入到二维码解码任务中,并将二维码解码任务加入队列,等待分配给线程池中的线程进行处理,以执行二维码解码任务,对该相机帧数据进行二维码识别。队列中可以缓冲多个二维码解码任务,由后续线程池控制线程执行二维码解码任务。
步骤230,将队列中的至少两个二维码解码任务发送给线程池中的至少两个线程,通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理。
目前的终端设备一般都是多核的,为了充分利用终端设备的多核优势,将现有技术中的串行获取相机帧数据改为并行获取相机帧数据,并且使用线程池来维护多线程,可以避免同时过多线程并发影响性能。其中,所述线程池大小与CPU核数相匹配,所述线程池可以预留设定数量的CPU核数,以给其他线程使用。优选的,所述线程池可以预留1个CPU核给主线程使用,从而保证了线程池中的多个线程并行执行可以快速识别二维码,而且不影响主线程的执行。
图3是本公开实施例中的执行二维码解码任务的流程示意图,如图3所示,将至少两个二维码解码任务加入队列,在线程池中有空余的线程可以执行二维码解码任务时,按照队列的顺序从队列的队头取出二维码解码任务并分配给空余的线程进行执行。
可选的,在通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理之后,还包括:
在二维码解码任务输出的原子布尔变量为真时,确定该二维码解码任务对应的线程对二维码识别成功。
针对二维码解码任务,可以预先设置一个原子布尔变量,在二维码识别成功时,二维码解码任务将该原子布尔变量设置为真,如果识别失败,则任务结束。从而在线程池中的多个线程执行二维码解码任务时,如果有二维码解码任务输出的原子布尔变量为真,则确定该二维码解码任务对应的线程对二维码识别成功。通过原子布尔变量,可以保证多线程的线程同步。
步骤240,在所述至少两个线程中如果有线程识别成功,则获取二维码识别结果,并停止其他线程执行二维码的识别处理,停止获取相机帧数据。
可选的,停止其他线程执行二维码的识别处理,包括:
关闭所述线程池。
在通过线程池维护多线程执行二维码解码任务时,如果有线程对二维码识别成功,则可以直接关闭线程池,从而实现停止其他线程的执行,实现了快速关闭其他线程。通过线程池,充分利用了终端设备的多核硬件,而且不会产生过多线程。
本实施例的技术方案,通过将获取到的至少两帧相机帧数据分配给至少两个二维码解码任务,并将所述至少两个二维码解码任务加入队列,将队列中的至少两个二维码解码任务发送给线程池中的至少两个线程进行执行,对二维码进行并行识别处理,充分利用了终端设备的多核硬件,而且可以控制多线程的数量,避免了同时过多线程并发影响性能,经过实践验证,当线程池大小等于CPU核数减一时,从打开摄像头到二维码解码识别成功的耗时,减少300%左右,大大提高了二维码的识别速度及识别效率。
图4是本公开实施例提供的一种识别二维码的装置的结构示意图,本实施例可适用于快速识别二维码的情况,该装置可以执行识别二维码的方法,该装置可以由软件和/或硬件来实现,一般可集成在手机或平板电脑等终端设备中。如图4所示,本公开实施例所述的识别二维码的装置包括:并行处理模块410和识别结果确定模块420。
其中,并行处理模块410,用于获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;
识别结果确定模块420,用于基于所述并行识别处理,确定二维码识别结果。
可选的,所述识别结果确定模块具体用于:
在所述至少两个线程中如果有线程识别成功,则获取二维码识别结果,并停止其他线程执行二维码的识别处理,停止获取相机帧数据。
可选的,所述并行处理模块包括:
相机帧分配单元,用于将获取到的至少两帧相机帧数据分配给至少两个二维码解码任务,并将所述至少两个二维码解码任务加入队列;
并行识别单元,用于将队列中的至少两个二维码解码任务发送给线程池中的至少两个线程,通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理。
可选的,所述停止模块包括:
线程池关闭单元,用于关闭所述线程池。
可选的,所述线程池大小与CPU核数相匹配。
可选的,还包括:
识别成功确定模块,用于在通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理之后,在二维码解码任务输出的原子布尔变量为真时,确定该二维码解码任务对应的线程对二维码识别成功。
可选的,所述并行处理模块具体用于:
获取一帧相机帧数据,将获取到的相机帧数据分配给一个线程进行二维码的识别处理,同时获取另一帧相机帧数据。
上述识别二维码的装置可执行本公开任意实施例所提供的识别二维码的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本公开任意实施例提供的识别二维码的方法。
图5是本公开实施例提供的一种终端设备的硬件结构示意图。终端设备可以以各种形式来实施,本公开中的终端设备可以包括但不限于诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(Personal Digital Assistant,个人数字助理)、PAD(平板电脑)、PMP(Portable Multimedia Player,便携式多媒体播放器)、导航装置、车载终端设备、车载显示终端、车载电子后视镜等等的移动终端设备以及诸如数字TV、台式计算机等等的固定终端设备。
如图5所示,终端设备500可以包括无线通信单元510、A/V(音频/视频)输入单元520、用户输入单元530、感测单元540、输出单元550、存储器560、接口单元570、处理器580和电源单元590等等。图5示出了具有各种组件的终端设备,但是应理解的是,并不要求实施所有示出的组件,可以替代地实施更多或更少的组件。
其中,无线通信单元510允许终端设备500与无线通信系统或网络之间的无线电通信。A/V输入单元520用于接收音频或视频信号。用户输入单元530可以根据用户输入的命令生成键输入数据以控制终端设备的各种操作。感测单元540检测终端设备500的当前状态、终端设备500的位置、用户对于终端设备500的触摸输入的有无、终端设备500的取向、终端设备500的加速或减速移动和方向等等,并且生成用于控制终端设备500的操作的命令或信号。接口单元570用作至少一个外部装置与终端设备500连接可以通信的接口。输出单元550被构造为以视觉、音频和/或触觉方式提供输出信号。存储器560可以存储由处理器580执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据。存储器560可以包括至少一种类型的存储介质。而且,终端设备500可以与通过网络连接执行存储器560的存储功能的网络存储装置协作。处理器580通常控制终端设备的总体操作。另外,处理器580可以包括用于再现或回放多媒体数据的多媒体模块。处理器580可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。电源单元590在处理器580的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
处理器580通过运行存储在存储器560中的程序,从而执行终端设备500的各种功能应用以及数据处理,例如实现本公开实施例所提供的一种识别二维码的方法,包括:
获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;
基于所述并行识别处理,确定二维码识别结果。
本公开实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种识别二维码的方法,该方法包括:
获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;
基于所述并行识别处理,确定二维码识别结果。
当然,本公开实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本公开任意实施例所提供的识别二维码的方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
值得注意的是,上述识别二维码的装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。
注意,上述仅为本公开的较佳实施例及所运用技术原理。本领域技术人员会理解,本公开不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本公开的保护范围。因此,虽然通过以上实施例对本公开进行了较为详细的说明,但是本公开不仅仅限于以上实施例,在不脱离本公开构思的情况下,还可以包括更多其他等效实施例,而本公开的范围由所附的权利要求范围决定。
Claims (9)
1.一种识别二维码的方法,其特征在于,所述方法包括:
获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;
基于所述并行识别处理,确定二维码识别结果;
将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理,包括:
将获取到的至少两帧相机帧数据分配给至少两个二维码解码任务,并将所述至少两个二维码解码任务加入队列;
将队列中的至少两个二维码解码任务发送给线程池中的至少两个线程,通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理。
2.根据权利要求1所述的方法,其特征在于,基于所述并行识别处理,确定二维码识别结果,包括:
在所述至少两个线程中如果有线程识别成功,则获取二维码识别结果,并停止其他线程执行二维码的识别处理,停止获取相机帧数据。
3.根据权利要求2所述的方法,其特征在于,停止其他线程执行二维码的识别处理,包括:
关闭所述线程池。
4.根据权利要求2所述的方法,其特征在于,所述线程池大小与CPU核数相匹配。
5.根据权利要求2所述的方法,其特征在于,在通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理之后,还包括:
在二维码解码任务输出的原子布尔变量为真时,确定该二维码解码任务对应的线程对二维码识别成功。
6.根据权利要求1所述的方法,其特征在于,获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理,包括:
获取一帧相机帧数据,将获取到的相机帧数据分配给一个线程进行二维码的识别处理,同时获取另一帧相机帧数据。
7.一种识别二维码的装置,其特征在于,所述装置包括:
并行处理模块,用于获取至少两帧相机帧数据,并将获取到的至少两帧相机帧数据分配给至少两个线程进行二维码的并行识别处理;
识别结果确定模块,用于基于所述并行识别处理,确定二维码识别结果;
所述并行处理模块包括:
相机帧分配单元,用于将获取到的至少两帧相机帧数据分配给至少两个二维码解码任务,并将所述至少两个二维码解码任务加入队列;
并行识别单元,用于将队列中的至少两个二维码解码任务发送给线程池中的至少两个线程,通过所述至少两个线程并行执行对应的二维码解码任务,以对二维码进行并行识别处理。
8.一种终端设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
摄像头,用于采集相机帧;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6任一所述的识别二维码的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-6任一所述的识别二维码的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810948442.7A CN109598161B (zh) | 2018-08-20 | 2018-08-20 | 识别二维码的方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810948442.7A CN109598161B (zh) | 2018-08-20 | 2018-08-20 | 识别二维码的方法、装置、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109598161A CN109598161A (zh) | 2019-04-09 |
CN109598161B true CN109598161B (zh) | 2022-02-22 |
Family
ID=65956720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810948442.7A Active CN109598161B (zh) | 2018-08-20 | 2018-08-20 | 识别二维码的方法、装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109598161B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115146664B (zh) * | 2022-09-06 | 2022-12-23 | 无锡盈达聚力科技有限公司 | 图像采集方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833639A (zh) * | 2010-05-25 | 2010-09-15 | 福建新大陆电脑股份有限公司 | 一种支持多程序并行处理的条码解码装置 |
CN101882210A (zh) * | 2010-06-01 | 2010-11-10 | 福建新大陆电脑股份有限公司 | 矩阵式二维条码解码芯片及其解码方法 |
CN103268461A (zh) * | 2013-04-25 | 2013-08-28 | 浙江成功软件开发有限公司 | 一种基于二维码的内外网物理隔离数据交换方法 |
US9451291B1 (en) * | 2015-08-31 | 2016-09-20 | Radmilo Bozinovic | Fast DWT-based intermediate video codec optimized for massively parallel architecture |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9946963B2 (en) * | 2013-03-01 | 2018-04-17 | Layar B.V. | Barcode visualization in augmented reality |
-
2018
- 2018-08-20 CN CN201810948442.7A patent/CN109598161B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833639A (zh) * | 2010-05-25 | 2010-09-15 | 福建新大陆电脑股份有限公司 | 一种支持多程序并行处理的条码解码装置 |
CN101882210A (zh) * | 2010-06-01 | 2010-11-10 | 福建新大陆电脑股份有限公司 | 矩阵式二维条码解码芯片及其解码方法 |
CN103268461A (zh) * | 2013-04-25 | 2013-08-28 | 浙江成功软件开发有限公司 | 一种基于二维码的内外网物理隔离数据交换方法 |
US9451291B1 (en) * | 2015-08-31 | 2016-09-20 | Radmilo Bozinovic | Fast DWT-based intermediate video codec optimized for massively parallel architecture |
Also Published As
Publication number | Publication date |
---|---|
CN109598161A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488791A (zh) | 将指尖运动模式实时地设备上分类为手势 | |
CN109741517A (zh) | 一种发票查验方法、装置和系统 | |
CN109598162A (zh) | 识别二维码的方法、装置、终端设备及存储介质 | |
US10455259B2 (en) | Enhanced text rendering and readability in images | |
CN111753717B (zh) | 用于提取文本的结构化信息的方法、装置、设备及介质 | |
CN112052733A (zh) | 数据库构建方法、人脸识别方法、装置及电子设备 | |
CN103793676A (zh) | 识别二维码与点阵图形构成的防伪标识的方法及装置 | |
US11113998B2 (en) | Generating three-dimensional user experience based on two-dimensional media content | |
CN106156794B (zh) | 基于文字风格识别的文字识别方法及装置 | |
CN111507122A (zh) | 图形码识别方法、装置、存储介质及终端 | |
CN109598161B (zh) | 识别二维码的方法、装置、终端设备及存储介质 | |
CN113011413A (zh) | 基于智能笔手写图像的处理方法、装置、系统及存储介质 | |
CN112569591A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN111177450B (zh) | 一种图像检索云识别方法、系统及计算机可读存储介质 | |
CN110764685B (zh) | 用于识别二维码的方法和设备 | |
CN110363187B (zh) | 一种人脸识别方法、装置、机器可读介质及设备 | |
CN110119429B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111062262A (zh) | 发票识别方法以及发票识别装置 | |
US10977527B2 (en) | Method and apparatus for detecting door image by using machine learning algorithm | |
KR20150103443A (ko) | 멀티클래스 분류 장치, 그 방법 및 컴퓨터 프로그램이 기록된 기록매체 | |
CN114049640A (zh) | 一种票据文本检测方法、装置、电子设备及存储介质 | |
CN114898350A (zh) | 一种银行卡识别方法、识别系统、电子设备及存储介质 | |
KR20140134844A (ko) | 객체 기반 사진 촬영 방법 및 장치 | |
CN103491537A (zh) | 一种接入无线网络的方法和设备 | |
CN112380169A (zh) | 存储装置、数据处理方法、装置、设备、介质和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |