From e0dfa258a0287aca9eb0a0c961b6c9879572ed09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Nordstr=C3=B8m?= Date: Fri, 29 Dec 2017 15:33:53 +0100 Subject: [PATCH 1/7] Add missing library. Remove invalid flag. Remove garbage. --- .DS_Store | Bin 6148 -> 0 bytes Makefile | 8 +++----- main | Bin 60480 -> 0 bytes main.o | Bin 53668 -> 0 bytes 4 files changed, 3 insertions(+), 5 deletions(-) delete mode 100644 .DS_Store delete mode 100755 main delete mode 100644 main.o diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 15a8656c98554bf03e024562eef6226b61adaf6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJx>Bb5PfqJbH+kS%PVa(;77pjLeRv*MtdU%M`A>wvA-Ya5AfgMo7t6cpdmEI zn3-hu?d`p{!@f;!Spd>|8?}KZfRw42?6LVK^u6XYxdi;F{ zbnhB?!2nNqUD>~DzB`&**h11T9!@aC46_yfyYiVbpBsO7i9fA#RXG?X#ie3Kpmd&tjZPk^m+-7A~ z-%vZnEvr0JG3NeFP}cd$gRYdB#2sPR!yRx3+yOekGg~9w59qBs;10M03kUT3kTDhW zh*d!Qbg;220I|Vg3-;}=KQYq*Vji&y$PtDFDKSVTUNI!z93;s3K9Bq=V30$sGUthv zCEidZUOXf-IwTM1tvlcj)E(Ffk4-)QuYSJ&*G2y14!8sV$^mKg@B2M2DW0usi_^0< sV?Hu9lvf2@NZ7HXm|Q)I51AGm&$L6#BUS-9!tg%=W`j5Gz^^*+2?v>hmH+?% diff --git a/Makefile b/Makefile index 03b55f6..a07969b 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,8 @@ CC=g++ -ARCH=-arch x86_64 - INCLUDE_FLAGS=-I/usr/local/include CFLAGS=-c -Wall $(INCLUDE_FLAGS) -LDFLAGS= -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lzbar +LDFLAGS= -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio -lzbar SOURCES = main.cpp OBJECTS=$(SOURCES:.cpp=.o) @@ -14,7 +12,7 @@ EXECUTABLE=main all : $(SOURCES) $(EXECUTABLE) $(EXECUTABLE) : $(OBJECTS) Makefile - $(CC) $(ARCH) $(LDFLAGS) $(OBJECTS) -o $@ + $(CC) $(LDFLAGS) $(OBJECTS) -o $@ .cpp.o: - $(CC) $(CFLAGS) $< -o $@ \ No newline at end of file + $(CC) $(CFLAGS) $< -o $@ diff --git a/main b/main deleted file mode 100755 index 8d339996ca0ffcd1ed8d3576a721bad9cbc3b3c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60480 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 U*%IzMOAse6MM?S#E5rEz0DfyUpa1{> diff --git a/main.o b/main.o deleted file mode 100644 index b8547ef9c2b0dc60c91df041274273215cc0ecf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53668 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 From d2154759ff9d4a94ec604ad73bdb546b66bb94ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Nordstr=C3=B8m?= Date: Fri, 29 Dec 2017 15:37:38 +0100 Subject: [PATCH 2/7] Simplify Makefile. --- Makefile | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index a07969b..d764270 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,8 @@ -CC=g++ - INCLUDE_FLAGS=-I/usr/local/include CFLAGS=-c -Wall $(INCLUDE_FLAGS) LDFLAGS= -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio -lzbar -SOURCES = main.cpp -OBJECTS=$(SOURCES:.cpp=.o) - -EXECUTABLE=main - -all : $(SOURCES) $(EXECUTABLE) - -$(EXECUTABLE) : $(OBJECTS) Makefile - $(CC) $(LDFLAGS) $(OBJECTS) -o $@ +all: main -.cpp.o: - $(CC) $(CFLAGS) $< -o $@ +main: main.cpp + $(CXX) $(CFLAGS) $(LDFLAGS) $< -o $@ From 5cd954b059c61d28e5a19258f4f0a3c377daaa2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Nordstr=C3=B8m?= Date: Fri, 29 Dec 2017 15:38:43 +0100 Subject: [PATCH 3/7] Ignore garbage. --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..24853ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +/main From b671024c286171516e7a795c0434ce6dca71b894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Nordstr=C3=B8m?= Date: Fri, 29 Dec 2017 15:58:25 +0100 Subject: [PATCH 4/7] Reformat. --- main.cpp | 139 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 72 insertions(+), 67 deletions(-) diff --git a/main.cpp b/main.cpp index 6c9ce15..c5bbdc2 100644 --- a/main.cpp +++ b/main.cpp @@ -1,88 +1,93 @@ +#include #include #include #include -#include using namespace cv; using namespace std; using namespace zbar; -//g++ main.cpp /usr/local/include/ /usr/local/lib/ -lopencv_highgui.2.4.8 -lopencv_core.2.4.8 - -int main(int argc, char* argv[]) +int main (int argc, char *argv[]) { - VideoCapture cap(0); // open the video camera no. 0 + VideoCapture cap(0); // open the video camera no. 0 + + // cap.set(CV_CAP_PROP_FRAME_WIDTH,800); + // cap.set(CV_CAP_PROP_FRAME_HEIGHT,640); + + if (!cap.isOpened()) // if not success, exit program + { + cout << "Cannot open the video cam" << endl; + return -1; + } + + ImageScanner scanner; + scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1); + + double dWidth = + cap.get(CV_CAP_PROP_FRAME_WIDTH); // get the width of frames of the video + double dHeight = cap.get( + CV_CAP_PROP_FRAME_HEIGHT); // get the height of frames of the video - // cap.set(CV_CAP_PROP_FRAME_WIDTH,800); - // cap.set(CV_CAP_PROP_FRAME_HEIGHT,640); + cout << "Frame size : " << dWidth << " x " << dHeight << endl; - if (!cap.isOpened()) // if not success, exit program + namedWindow("MyVideo", CV_WINDOW_AUTOSIZE); // create a window called + // "MyVideo" + + while (1) + { + Mat frame; + + bool bSuccess = cap.read(frame); // read a new frame from video + + if (!bSuccess) // if not success, break loop { - cout << "Cannot open the video cam" << endl; - return -1; + cout << "Cannot read a frame from video stream" << endl; + break; } + Mat grey; + cvtColor(frame, grey, CV_BGR2GRAY); - ImageScanner scanner; - scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1); + int width = frame.cols; + int height = frame.rows; + uchar *raw = (uchar *) grey.data; + // wrap image data + Image image(width, height, "Y800", raw, width * height); + // scan the image for barcodes + int n = scanner.scan(image); - double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video - double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video - - cout << "Frame size : " << dWidth << " x " << dHeight << endl; + // extract results + for (Image::SymbolIterator symbol = image.symbol_begin(); + symbol != image.symbol_end(); ++symbol) + { + vector vp; + // do something useful with results + cout << "decoded " << symbol->get_type_name() << " symbol \"" + << symbol->get_data() << '"' << " " << endl; + int n = symbol->get_location_size(); + for (int i = 0; i < n; i++) { + vp.push_back( + Point(symbol->get_location_x(i), symbol->get_location_y(i))); + } + RotatedRect r = minAreaRect(vp); + Point2f pts[4]; + r.points(pts); + for (int i = 0; i < 4; i++) + { + line(frame, pts[i], pts[(i + 1) % 4], Scalar(255, 0, 0), 3); + } + // cout<<"Angle: "< vp; - // do something useful with results - cout << "decoded " << symbol->get_type_name() << " symbol \"" << symbol->get_data() << '"' <<" "<< endl; - int n = symbol->get_location_size(); - for(int i=0;iget_location_x(i),symbol->get_location_y(i))); - } - RotatedRect r = minAreaRect(vp); - Point2f pts[4]; - r.points(pts); - for(int i=0;i<4;i++){ - line(frame,pts[i],pts[(i+1)%4],Scalar(255,0,0),3); - } - //cout<<"Angle: "< Date: Fri, 29 Dec 2017 16:08:01 +0100 Subject: [PATCH 5/7] Remove dash c from CFLAGS so we create ELF. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d764270..ee3048e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ INCLUDE_FLAGS=-I/usr/local/include -CFLAGS=-c -Wall $(INCLUDE_FLAGS) +CFLAGS=-Wall $(INCLUDE_FLAGS) LDFLAGS= -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio -lzbar all: main From 938cba62a6d50eeac8babfd1f14b73958c1ceddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Nordstr=C3=B8m?= Date: Fri, 29 Dec 2017 16:08:50 +0100 Subject: [PATCH 6/7] Compact a couple of lines down to one. --- main.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index c5bbdc2..b8a5570 100644 --- a/main.cpp +++ b/main.cpp @@ -37,9 +37,7 @@ int main (int argc, char *argv[]) { Mat frame; - bool bSuccess = cap.read(frame); // read a new frame from video - - if (!bSuccess) // if not success, break loop + if (!cap.read(frame)) // read frame from video or break loop { cout << "Cannot read a frame from video stream" << endl; break; From a2475c01f54bbf7bed33e16cd335e39a95d835c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Nordstr=C3=B8m?= Date: Fri, 29 Dec 2017 16:35:03 +0100 Subject: [PATCH 7/7] Rewrite some comments and text strings, and use EXIT_FAILURE and EXIT_SUCCESS. --- main.cpp | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/main.cpp b/main.cpp index b8a5570..385b39b 100644 --- a/main.cpp +++ b/main.cpp @@ -9,29 +9,26 @@ using namespace zbar; int main (int argc, char *argv[]) { - VideoCapture cap(0); // open the video camera no. 0 + VideoCapture cap(0); // open video capture device #0 // cap.set(CV_CAP_PROP_FRAME_WIDTH,800); // cap.set(CV_CAP_PROP_FRAME_HEIGHT,640); if (!cap.isOpened()) // if not success, exit program { - cout << "Cannot open the video cam" << endl; - return -1; + cout << "Unable to open video capture device." << endl; + return EXIT_FAILURE; } ImageScanner scanner; scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1); - double dWidth = - cap.get(CV_CAP_PROP_FRAME_WIDTH); // get the width of frames of the video - double dHeight = cap.get( - CV_CAP_PROP_FRAME_HEIGHT); // get the height of frames of the video + double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); // get video frame width + double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); // get video frame height - cout << "Frame size : " << dWidth << " x " << dHeight << endl; + cout << "Frame size: " << dWidth << " x " << dHeight << endl; - namedWindow("MyVideo", CV_WINDOW_AUTOSIZE); // create a window called - // "MyVideo" + namedWindow("Video", CV_WINDOW_AUTOSIZE); // create window while (1) { @@ -39,7 +36,7 @@ int main (int argc, char *argv[]) if (!cap.read(frame)) // read frame from video or break loop { - cout << "Cannot read a frame from video stream" << endl; + cout << "Unable to read frame from video stream." << endl; break; } @@ -77,7 +74,7 @@ int main (int argc, char *argv[]) // cout<<"Angle: "<