From 7fe273e8e8bd1ffd4735cb5d6f09ad8e58a39a96 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Mon, 29 Jul 2019 00:07:43 +0800
Subject: [PATCH] add opencv-zbar source code
---
ok335xD/program/opencv-zbar/decoder.h | 19 ++++++
ok335xD/program/opencv-zbar/cvzbar.c | 14 ++++
ok335xD/program/opencv-zbar/makefile | 27 +++++++++
ok335xD/program/opencv-zbar/decoder.cpp | 64 +++++++++++++++++++++
4 files changed, 124 insertions(+), 0 deletions(-)
diff --git a/ok335xD/program/opencv-zbar/cvzbar.c b/ok335xD/program/opencv-zbar/cvzbar.c
new file mode 100644
index 0000000..812947e
--- /dev/null
+++ b/ok335xD/program/opencv-zbar/cvzbar.c
@@ -0,0 +1,14 @@
+#include<stdio.h>
+#include"decoder.h"
+
+int main()
+{
+ struct code_msg msg;
+
+ if(decoder(0,&msg)<0)
+ return -1;
+
+ printf("type:%s\n",msg.get_type_name);
+ printf("data:%s\n",msg.get_data);
+ return 0;
+}
diff --git a/ok335xD/program/opencv-zbar/decoder.cpp b/ok335xD/program/opencv-zbar/decoder.cpp
new file mode 100644
index 0000000..79663e0
--- /dev/null
+++ b/ok335xD/program/opencv-zbar/decoder.cpp
@@ -0,0 +1,64 @@
+#include<string.h>
+#include<iostream>
+#include<opencv2/core.hpp>
+#include<opencv2/highgui.hpp>
+#include<opencv2/imgproc.hpp>
+#include<zbar.h>
+#include"decoder.h"
+
+using namespace std;
+using namespace cv;
+using namespace zbar;
+
+int decoder(int carame_num,struct code_msg* code_msg)
+{
+ Mat image;
+ VideoCapture capture(carame_num);
+ int flag = 0;
+
+ if(!capture.isOpened())
+ {
+ cout<<"Open Camera failure"<<endl;
+ return -1;
+ }
+ cout << "Open Camera ok"<<endl;
+
+ while(!flag)
+ {
+ capture >> image;//读取视频帧
+ if(!image.empty())
+ {
+ cout << "Get video framer from camera"<<endl;
+
+
+#if 0 //置1打开图形窗口进行对焦等操作
+ imshow("source",image);
+#endif
+ cvtColor(image,image,CV_RGB2GRAY);//灰度图
+ // imshow("imageGray",image);
+ // cout << "灰度图转换成功"<<endl;
+
+ //zbar解码
+ int width = image.cols;
+ int heigth = image.rows;
+ uchar *raw = (uchar *)image.data;
+ Image imagezbar(width,heigth,"Y800",raw,width*heigth);
+ ImageScanner scanner;
+ scanner.scan(imagezbar);
+ Image::SymbolIterator symbol = imagezbar.symbol_begin();
+ for(;symbol != imagezbar.symbol_end();++symbol)//解码成功
+ {
+ //cout << "type:" <<symbol->get_type_name()<<endl;
+ strcpy(code_msg->get_type_name,symbol->get_type_name().c_str());
+ //cout << "data:" <<symbol->get_data()<<endl;
+ strcpy(code_msg->get_data,symbol->get_data().c_str());
+ flag = 1;
+ }
+
+ }
+ //if(waitKey(10) == 0x0d)
+ // break;
+ }
+ return 0;
+}
+
diff --git a/ok335xD/program/opencv-zbar/decoder.h b/ok335xD/program/opencv-zbar/decoder.h
new file mode 100644
index 0000000..e217754
--- /dev/null
+++ b/ok335xD/program/opencv-zbar/decoder.h
@@ -0,0 +1,19 @@
+#ifndef _DECODER_H_
+#define _DECODER_H_
+
+struct code_msg{
+ char get_type_name[10];
+ char get_data[20];
+};
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+int decoder(int carame_num,struct code_msg* code_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/ok335xD/program/opencv-zbar/makefile b/ok335xD/program/opencv-zbar/makefile
new file mode 100644
index 0000000..1de7f7d
--- /dev/null
+++ b/ok335xD/program/opencv-zbar/makefile
@@ -0,0 +1,27 @@
+APPNAME=cvzbar
+
+CROSSTOOL=/opt/crosstool/cortex-a7/bin/arm-linux-gnueabi-
+GPP=${CROSSTOOL}g++
+GCC=${CROSSTOOL}gcc
+
+PRJ_PATH=${shell pwd}
+
+LIBS_PATH=${PRJ_PATH}/../../3rdparty/install
+OPENCV_PKGCONFIG=${LIBS_PATH}/lib/pkgconfig
+
+CPPFLAGS = `export PKG_CONFIG_PATH=${OPENCV_PKGCONFIG} && pkg-config --cflags --libs opencv`
+CFLAGS+=-I${LIBS_PATH}/include
+LDFLAGS=-L${LIBS_PATH}/lib -lzbar -liconv
+
+all:
+ echo $PKG_CONFIG_PATH
+ ${GPP} ${CFLAGS} -c decoder.cpp -o decoder.o $(CPPFLAGS) -Wall
+ ${GCC} -c cvzbar.c -Wall
+ ${GPP} decoder.o cvzbar.o -o ${APPNAME} $(CPPFLAGS) -lstdc++ ${LDFLAGS}
+ cp ${APPNAME} /tftp
+
+clean:
+ rm -f *.o ${APPNAME}
+
+distclean: clean
+ rm -f cscope* tags
--
Gitblit v1.9.1