Compare Revisions
Last modification
- Rev 9 2014-01-29 14:41:40
- Author: PointedEars
- Log message:
Removed superfluous include paths from all build configurations
/trunk/Chapter 01/myQtGUIApp/Debug/OpenCV2-Qt1 |
Cannot display: file marked as a binary type.
|
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:executable |
## -1 +0,0 ## |
-* |
\ No newline at end of property |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/Debug/objects.mk |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Debug/objects.mk (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Debug/objects.mk (nonexistent) |
@@ -1,8 +0,0 @@ |
-################################################################################ |
-# Automatically-generated file. Do not edit! |
-################################################################################ |
- |
-USER_OBJS := |
- |
-LIBS := -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_features2d -lopencv_calib3d -lQtGui -lQtCore -lpthread |
- |
Index: trunk/Chapter 01/myQtGUIApp/Debug/main.d |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Debug/main.d (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Debug/main.d (nonexistent) |
@@ -1,179 +0,0 @@ |
-main.d: ../main.cpp /usr/include/qt4/QtGui/QApplication \ |
- /usr/include/qt4/QtGui/qapplication.h \ |
- /usr/include/qt4/QtCore/qcoreapplication.h \ |
- /usr/include/qt4/QtCore/qobject.h /usr/include/qt4/QtCore/qobjectdefs.h \ |
- /usr/include/qt4/QtCore/qnamespace.h /usr/include/qt4/QtCore/qglobal.h \ |
- /usr/include/qt4/QtCore/qconfig.h /usr/include/qt4/QtCore/qfeatures.h \ |
- /usr/include/qt4/QtCore/qstring.h /usr/include/qt4/QtCore/qchar.h \ |
- /usr/include/qt4/QtCore/qbytearray.h /usr/include/qt4/QtCore/qatomic.h \ |
- /usr/include/qt4/QtCore/qbasicatomic.h \ |
- /usr/include/qt4/QtCore/qatomic_arch.h \ |
- /usr/include/qt4/QtCore/qatomic_i386.h /usr/include/qt4/QtCore/qlist.h \ |
- /usr/include/qt4/QtCore/qiterator.h \ |
- /usr/include/qt4/QtCore/qalgorithms.h \ |
- /usr/include/qt4/QtCore/qscopedpointer.h \ |
- /usr/include/qt4/QtCore/qcoreevent.h \ |
- /usr/include/qt4/QtCore/qeventloop.h \ |
- /usr/include/qt4/QtGui/qwindowdefs.h /usr/include/qt4/QtCore/qpoint.h \ |
- /usr/include/qt4/QtCore/qsize.h /usr/include/qt4/QtGui/qcursor.h \ |
- ../mainwindow.h /usr/include/qt4/QtGui/QMainWindow \ |
- /usr/include/qt4/QtGui/qmainwindow.h /usr/include/qt4/QtGui/qwidget.h \ |
- /usr/include/qt4/QtCore/qmargins.h /usr/include/qt4/QtGui/qpaintdevice.h \ |
- /usr/include/qt4/QtCore/qrect.h /usr/include/qt4/QtGui/qpalette.h \ |
- /usr/include/qt4/QtGui/qcolor.h /usr/include/qt4/QtGui/qrgb.h \ |
- /usr/include/qt4/QtCore/qstringlist.h \ |
- /usr/include/qt4/QtCore/qdatastream.h \ |
- /usr/include/qt4/QtCore/qiodevice.h /usr/include/qt4/QtCore/qregexp.h \ |
- /usr/include/qt4/QtCore/qstringmatcher.h /usr/include/qt4/QtGui/qbrush.h \ |
- /usr/include/qt4/QtCore/qpair.h /usr/include/qt4/QtCore/qvector.h \ |
- /usr/include/qt4/QtGui/qmatrix.h /usr/include/qt4/QtGui/qpolygon.h \ |
- /usr/include/qt4/QtGui/qregion.h /usr/include/qt4/QtCore/qline.h \ |
- /usr/include/qt4/QtGui/qtransform.h \ |
- /usr/include/qt4/QtGui/qpainterpath.h /usr/include/qt4/QtGui/qimage.h \ |
- /usr/include/qt4/QtGui/qpixmap.h \ |
- /usr/include/qt4/QtCore/qsharedpointer.h \ |
- /usr/include/qt4/QtCore/qshareddata.h \ |
- /usr/include/qt4/QtCore/qsharedpointer_impl.h \ |
- /usr/include/qt4/QtGui/qfont.h /usr/include/qt4/QtGui/qfontmetrics.h \ |
- /usr/include/qt4/QtGui/qfontinfo.h /usr/include/qt4/QtGui/qsizepolicy.h \ |
- /usr/include/qt4/QtGui/qkeysequence.h \ |
- /usr/include/qt4/QtGui/qtabwidget.h /usr/include/qt4/QtGui/qicon.h \ |
- /usr/include/qt4/QtGui/QFileDialog /usr/include/qt4/QtGui/qfiledialog.h \ |
- /usr/include/qt4/QtCore/qdir.h /usr/include/qt4/QtCore/qfileinfo.h \ |
- /usr/include/qt4/QtCore/qfile.h /usr/include/qt4/QtGui/qdialog.h |
- |
-/usr/include/qt4/QtGui/QApplication: |
- |
-/usr/include/qt4/QtGui/qapplication.h: |
- |
-/usr/include/qt4/QtCore/qcoreapplication.h: |
- |
-/usr/include/qt4/QtCore/qobject.h: |
- |
-/usr/include/qt4/QtCore/qobjectdefs.h: |
- |
-/usr/include/qt4/QtCore/qnamespace.h: |
- |
-/usr/include/qt4/QtCore/qglobal.h: |
- |
-/usr/include/qt4/QtCore/qconfig.h: |
- |
-/usr/include/qt4/QtCore/qfeatures.h: |
- |
-/usr/include/qt4/QtCore/qstring.h: |
- |
-/usr/include/qt4/QtCore/qchar.h: |
- |
-/usr/include/qt4/QtCore/qbytearray.h: |
- |
-/usr/include/qt4/QtCore/qatomic.h: |
- |
-/usr/include/qt4/QtCore/qbasicatomic.h: |
- |
-/usr/include/qt4/QtCore/qatomic_arch.h: |
- |
-/usr/include/qt4/QtCore/qatomic_i386.h: |
- |
-/usr/include/qt4/QtCore/qlist.h: |
- |
-/usr/include/qt4/QtCore/qiterator.h: |
- |
-/usr/include/qt4/QtCore/qalgorithms.h: |
- |
-/usr/include/qt4/QtCore/qscopedpointer.h: |
- |
-/usr/include/qt4/QtCore/qcoreevent.h: |
- |
-/usr/include/qt4/QtCore/qeventloop.h: |
- |
-/usr/include/qt4/QtGui/qwindowdefs.h: |
- |
-/usr/include/qt4/QtCore/qpoint.h: |
- |
-/usr/include/qt4/QtCore/qsize.h: |
- |
-/usr/include/qt4/QtGui/qcursor.h: |
- |
-../mainwindow.h: |
- |
-/usr/include/qt4/QtGui/QMainWindow: |
- |
-/usr/include/qt4/QtGui/qmainwindow.h: |
- |
-/usr/include/qt4/QtGui/qwidget.h: |
- |
-/usr/include/qt4/QtCore/qmargins.h: |
- |
-/usr/include/qt4/QtGui/qpaintdevice.h: |
- |
-/usr/include/qt4/QtCore/qrect.h: |
- |
-/usr/include/qt4/QtGui/qpalette.h: |
- |
-/usr/include/qt4/QtGui/qcolor.h: |
- |
-/usr/include/qt4/QtGui/qrgb.h: |
- |
-/usr/include/qt4/QtCore/qstringlist.h: |
- |
-/usr/include/qt4/QtCore/qdatastream.h: |
- |
-/usr/include/qt4/QtCore/qiodevice.h: |
- |
-/usr/include/qt4/QtCore/qregexp.h: |
- |
-/usr/include/qt4/QtCore/qstringmatcher.h: |
- |
-/usr/include/qt4/QtGui/qbrush.h: |
- |
-/usr/include/qt4/QtCore/qpair.h: |
- |
-/usr/include/qt4/QtCore/qvector.h: |
- |
-/usr/include/qt4/QtGui/qmatrix.h: |
- |
-/usr/include/qt4/QtGui/qpolygon.h: |
- |
-/usr/include/qt4/QtGui/qregion.h: |
- |
-/usr/include/qt4/QtCore/qline.h: |
- |
-/usr/include/qt4/QtGui/qtransform.h: |
- |
-/usr/include/qt4/QtGui/qpainterpath.h: |
- |
-/usr/include/qt4/QtGui/qimage.h: |
- |
-/usr/include/qt4/QtGui/qpixmap.h: |
- |
-/usr/include/qt4/QtCore/qsharedpointer.h: |
- |
-/usr/include/qt4/QtCore/qshareddata.h: |
- |
-/usr/include/qt4/QtCore/qsharedpointer_impl.h: |
- |
-/usr/include/qt4/QtGui/qfont.h: |
- |
-/usr/include/qt4/QtGui/qfontmetrics.h: |
- |
-/usr/include/qt4/QtGui/qfontinfo.h: |
- |
-/usr/include/qt4/QtGui/qsizepolicy.h: |
- |
-/usr/include/qt4/QtGui/qkeysequence.h: |
- |
-/usr/include/qt4/QtGui/qtabwidget.h: |
- |
-/usr/include/qt4/QtGui/qicon.h: |
- |
-/usr/include/qt4/QtGui/QFileDialog: |
- |
-/usr/include/qt4/QtGui/qfiledialog.h: |
- |
-/usr/include/qt4/QtCore/qdir.h: |
- |
-/usr/include/qt4/QtCore/qfileinfo.h: |
- |
-/usr/include/qt4/QtCore/qfile.h: |
- |
-/usr/include/qt4/QtGui/qdialog.h: |
Index: trunk/Chapter 01/myQtGUIApp/Debug/sources.mk |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Debug/sources.mk (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Debug/sources.mk (nonexistent) |
@@ -1,27 +0,0 @@ |
-################################################################################ |
-# Automatically-generated file. Do not edit! |
-################################################################################ |
- |
-O_SRCS := |
-CPP_SRCS := |
-C_UPPER_SRCS := |
-C_SRCS := |
-S_UPPER_SRCS := |
-OBJ_SRCS := |
-ASM_SRCS := |
-CXX_SRCS := |
-C++_SRCS := |
-CC_SRCS := |
-OBJS := |
-C++_DEPS := |
-C_DEPS := |
-CC_DEPS := |
-CPP_DEPS := |
-EXECUTABLES := |
-CXX_DEPS := |
-C_UPPER_DEPS := |
- |
-# Every subdirectory with source files must be described here |
-SUBDIRS := \ |
-. \ |
- |
Index: trunk/Chapter 01/myQtGUIApp/Debug/moc_mainwindow.d |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Debug/moc_mainwindow.d (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Debug/moc_mainwindow.d (nonexistent) |
@@ -1,165 +0,0 @@ |
-moc_mainwindow.d: ../moc_mainwindow.cpp ../mainwindow.h \ |
- /usr/include/qt4/QtGui/QMainWindow /usr/include/qt4/QtGui/qmainwindow.h \ |
- /usr/include/qt4/QtGui/qwidget.h /usr/include/qt4/QtCore/qconfig.h \ |
- /usr/include/qt4/QtGui/qwindowdefs.h \ |
- /usr/include/qt4/QtCore/qobjectdefs.h \ |
- /usr/include/qt4/QtCore/qnamespace.h /usr/include/qt4/QtCore/qglobal.h \ |
- /usr/include/qt4/QtCore/qfeatures.h /usr/include/qt4/QtCore/qobject.h \ |
- /usr/include/qt4/QtCore/qstring.h /usr/include/qt4/QtCore/qchar.h \ |
- /usr/include/qt4/QtCore/qbytearray.h /usr/include/qt4/QtCore/qatomic.h \ |
- /usr/include/qt4/QtCore/qbasicatomic.h \ |
- /usr/include/qt4/QtCore/qatomic_arch.h \ |
- /usr/include/qt4/QtCore/qatomic_i386.h /usr/include/qt4/QtCore/qlist.h \ |
- /usr/include/qt4/QtCore/qiterator.h \ |
- /usr/include/qt4/QtCore/qalgorithms.h \ |
- /usr/include/qt4/QtCore/qscopedpointer.h \ |
- /usr/include/qt4/QtCore/qmargins.h /usr/include/qt4/QtGui/qpaintdevice.h \ |
- /usr/include/qt4/QtCore/qrect.h /usr/include/qt4/QtCore/qsize.h \ |
- /usr/include/qt4/QtCore/qpoint.h /usr/include/qt4/QtGui/qpalette.h \ |
- /usr/include/qt4/QtGui/qcolor.h /usr/include/qt4/QtGui/qrgb.h \ |
- /usr/include/qt4/QtCore/qstringlist.h \ |
- /usr/include/qt4/QtCore/qdatastream.h \ |
- /usr/include/qt4/QtCore/qiodevice.h /usr/include/qt4/QtCore/qregexp.h \ |
- /usr/include/qt4/QtCore/qstringmatcher.h /usr/include/qt4/QtGui/qbrush.h \ |
- /usr/include/qt4/QtCore/qpair.h /usr/include/qt4/QtCore/qvector.h \ |
- /usr/include/qt4/QtGui/qmatrix.h /usr/include/qt4/QtGui/qpolygon.h \ |
- /usr/include/qt4/QtGui/qregion.h /usr/include/qt4/QtCore/qline.h \ |
- /usr/include/qt4/QtGui/qtransform.h \ |
- /usr/include/qt4/QtGui/qpainterpath.h /usr/include/qt4/QtGui/qimage.h \ |
- /usr/include/qt4/QtGui/qpixmap.h \ |
- /usr/include/qt4/QtCore/qsharedpointer.h \ |
- /usr/include/qt4/QtCore/qshareddata.h \ |
- /usr/include/qt4/QtCore/qsharedpointer_impl.h \ |
- /usr/include/qt4/QtGui/qfont.h /usr/include/qt4/QtGui/qfontmetrics.h \ |
- /usr/include/qt4/QtGui/qfontinfo.h /usr/include/qt4/QtGui/qsizepolicy.h \ |
- /usr/include/qt4/QtGui/qcursor.h /usr/include/qt4/QtGui/qkeysequence.h \ |
- /usr/include/qt4/QtGui/qtabwidget.h /usr/include/qt4/QtGui/qicon.h \ |
- /usr/include/qt4/QtGui/QFileDialog /usr/include/qt4/QtGui/qfiledialog.h \ |
- /usr/include/qt4/QtCore/qdir.h /usr/include/qt4/QtCore/qfileinfo.h \ |
- /usr/include/qt4/QtCore/qfile.h /usr/include/qt4/QtGui/qdialog.h |
- |
-../mainwindow.h: |
- |
-/usr/include/qt4/QtGui/QMainWindow: |
- |
-/usr/include/qt4/QtGui/qmainwindow.h: |
- |
-/usr/include/qt4/QtGui/qwidget.h: |
- |
-/usr/include/qt4/QtCore/qconfig.h: |
- |
-/usr/include/qt4/QtGui/qwindowdefs.h: |
- |
-/usr/include/qt4/QtCore/qobjectdefs.h: |
- |
-/usr/include/qt4/QtCore/qnamespace.h: |
- |
-/usr/include/qt4/QtCore/qglobal.h: |
- |
-/usr/include/qt4/QtCore/qfeatures.h: |
- |
-/usr/include/qt4/QtCore/qobject.h: |
- |
-/usr/include/qt4/QtCore/qstring.h: |
- |
-/usr/include/qt4/QtCore/qchar.h: |
- |
-/usr/include/qt4/QtCore/qbytearray.h: |
- |
-/usr/include/qt4/QtCore/qatomic.h: |
- |
-/usr/include/qt4/QtCore/qbasicatomic.h: |
- |
-/usr/include/qt4/QtCore/qatomic_arch.h: |
- |
-/usr/include/qt4/QtCore/qatomic_i386.h: |
- |
-/usr/include/qt4/QtCore/qlist.h: |
- |
-/usr/include/qt4/QtCore/qiterator.h: |
- |
-/usr/include/qt4/QtCore/qalgorithms.h: |
- |
-/usr/include/qt4/QtCore/qscopedpointer.h: |
- |
-/usr/include/qt4/QtCore/qmargins.h: |
- |
-/usr/include/qt4/QtGui/qpaintdevice.h: |
- |
-/usr/include/qt4/QtCore/qrect.h: |
- |
-/usr/include/qt4/QtCore/qsize.h: |
- |
-/usr/include/qt4/QtCore/qpoint.h: |
- |
-/usr/include/qt4/QtGui/qpalette.h: |
- |
-/usr/include/qt4/QtGui/qcolor.h: |
- |
-/usr/include/qt4/QtGui/qrgb.h: |
- |
-/usr/include/qt4/QtCore/qstringlist.h: |
- |
-/usr/include/qt4/QtCore/qdatastream.h: |
- |
-/usr/include/qt4/QtCore/qiodevice.h: |
- |
-/usr/include/qt4/QtCore/qregexp.h: |
- |
-/usr/include/qt4/QtCore/qstringmatcher.h: |
- |
-/usr/include/qt4/QtGui/qbrush.h: |
- |
-/usr/include/qt4/QtCore/qpair.h: |
- |
-/usr/include/qt4/QtCore/qvector.h: |
- |
-/usr/include/qt4/QtGui/qmatrix.h: |
- |
-/usr/include/qt4/QtGui/qpolygon.h: |
- |
-/usr/include/qt4/QtGui/qregion.h: |
- |
-/usr/include/qt4/QtCore/qline.h: |
- |
-/usr/include/qt4/QtGui/qtransform.h: |
- |
-/usr/include/qt4/QtGui/qpainterpath.h: |
- |
-/usr/include/qt4/QtGui/qimage.h: |
- |
-/usr/include/qt4/QtGui/qpixmap.h: |
- |
-/usr/include/qt4/QtCore/qsharedpointer.h: |
- |
-/usr/include/qt4/QtCore/qshareddata.h: |
- |
-/usr/include/qt4/QtCore/qsharedpointer_impl.h: |
- |
-/usr/include/qt4/QtGui/qfont.h: |
- |
-/usr/include/qt4/QtGui/qfontmetrics.h: |
- |
-/usr/include/qt4/QtGui/qfontinfo.h: |
- |
-/usr/include/qt4/QtGui/qsizepolicy.h: |
- |
-/usr/include/qt4/QtGui/qcursor.h: |
- |
-/usr/include/qt4/QtGui/qkeysequence.h: |
- |
-/usr/include/qt4/QtGui/qtabwidget.h: |
- |
-/usr/include/qt4/QtGui/qicon.h: |
- |
-/usr/include/qt4/QtGui/QFileDialog: |
- |
-/usr/include/qt4/QtGui/qfiledialog.h: |
- |
-/usr/include/qt4/QtCore/qdir.h: |
- |
-/usr/include/qt4/QtCore/qfileinfo.h: |
- |
-/usr/include/qt4/QtCore/qfile.h: |
- |
-/usr/include/qt4/QtGui/qdialog.h: |
Index: trunk/Chapter 01/myQtGUIApp/Debug/makefile |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Debug/makefile (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Debug/makefile (nonexistent) |
@@ -1,58 +0,0 @@ |
-################################################################################ |
-# Automatically-generated file. Do not edit! |
-################################################################################ |
- |
--include ../makefile.init |
- |
-RM := rm -rf |
- |
-# All of the sources participating in the build are defined here |
--include sources.mk |
--include subdir.mk |
--include objects.mk |
- |
-ifneq ($(MAKECMDGOALS),clean) |
-ifneq ($(strip $(C++_DEPS)),) |
--include $(C++_DEPS) |
-endif |
-ifneq ($(strip $(C_DEPS)),) |
--include $(C_DEPS) |
-endif |
-ifneq ($(strip $(CC_DEPS)),) |
--include $(CC_DEPS) |
-endif |
-ifneq ($(strip $(CPP_DEPS)),) |
--include $(CPP_DEPS) |
-endif |
-ifneq ($(strip $(CXX_DEPS)),) |
--include $(CXX_DEPS) |
-endif |
-ifneq ($(strip $(C_UPPER_DEPS)),) |
--include $(C_UPPER_DEPS) |
-endif |
-endif |
- |
--include ../makefile.defs |
- |
-# Add inputs and outputs from these tool invocations to the build variables |
- |
-# All Target |
-all: OpenCV2-Qt1 |
- |
-# Tool invocations |
-OpenCV2-Qt1: $(OBJS) $(USER_OBJS) |
- @echo 'Building target: $@' |
- @echo 'Invoking: GCC C++ Linker' |
- g++ -L/usr/lib/i386-linux-gnu -o "OpenCV2-Qt1" $(OBJS) $(USER_OBJS) $(LIBS) |
- @echo 'Finished building target: $@' |
- @echo ' ' |
- |
-# Other Targets |
-clean: |
- -$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) OpenCV2-Qt1 |
- -@echo ' ' |
- |
-.PHONY: all clean dependents |
-.SECONDARY: |
- |
--include ../makefile.targets |
Index: trunk/Chapter 01/myQtGUIApp/Debug/mainwindow.d |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Debug/mainwindow.d (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Debug/mainwindow.d (nonexistent) |
@@ -1,293 +0,0 @@ |
-mainwindow.d: ../mainwindow.cpp ../mainwindow.h \ |
- /usr/include/qt4/QtGui/QMainWindow /usr/include/qt4/QtGui/qmainwindow.h \ |
- /usr/include/qt4/QtGui/qwidget.h /usr/include/qt4/QtCore/qconfig.h \ |
- /usr/include/qt4/QtGui/qwindowdefs.h \ |
- /usr/include/qt4/QtCore/qobjectdefs.h \ |
- /usr/include/qt4/QtCore/qnamespace.h /usr/include/qt4/QtCore/qglobal.h \ |
- /usr/include/qt4/QtCore/qfeatures.h /usr/include/qt4/QtCore/qobject.h \ |
- /usr/include/qt4/QtCore/qstring.h /usr/include/qt4/QtCore/qchar.h \ |
- /usr/include/qt4/QtCore/qbytearray.h /usr/include/qt4/QtCore/qatomic.h \ |
- /usr/include/qt4/QtCore/qbasicatomic.h \ |
- /usr/include/qt4/QtCore/qatomic_arch.h \ |
- /usr/include/qt4/QtCore/qatomic_i386.h /usr/include/qt4/QtCore/qlist.h \ |
- /usr/include/qt4/QtCore/qiterator.h \ |
- /usr/include/qt4/QtCore/qalgorithms.h \ |
- /usr/include/qt4/QtCore/qscopedpointer.h \ |
- /usr/include/qt4/QtCore/qmargins.h /usr/include/qt4/QtGui/qpaintdevice.h \ |
- /usr/include/qt4/QtCore/qrect.h /usr/include/qt4/QtCore/qsize.h \ |
- /usr/include/qt4/QtCore/qpoint.h /usr/include/qt4/QtGui/qpalette.h \ |
- /usr/include/qt4/QtGui/qcolor.h /usr/include/qt4/QtGui/qrgb.h \ |
- /usr/include/qt4/QtCore/qstringlist.h \ |
- /usr/include/qt4/QtCore/qdatastream.h \ |
- /usr/include/qt4/QtCore/qiodevice.h /usr/include/qt4/QtCore/qregexp.h \ |
- /usr/include/qt4/QtCore/qstringmatcher.h /usr/include/qt4/QtGui/qbrush.h \ |
- /usr/include/qt4/QtCore/qpair.h /usr/include/qt4/QtCore/qvector.h \ |
- /usr/include/qt4/QtGui/qmatrix.h /usr/include/qt4/QtGui/qpolygon.h \ |
- /usr/include/qt4/QtGui/qregion.h /usr/include/qt4/QtCore/qline.h \ |
- /usr/include/qt4/QtGui/qtransform.h \ |
- /usr/include/qt4/QtGui/qpainterpath.h /usr/include/qt4/QtGui/qimage.h \ |
- /usr/include/qt4/QtGui/qpixmap.h \ |
- /usr/include/qt4/QtCore/qsharedpointer.h \ |
- /usr/include/qt4/QtCore/qshareddata.h \ |
- /usr/include/qt4/QtCore/qsharedpointer_impl.h \ |
- /usr/include/qt4/QtGui/qfont.h /usr/include/qt4/QtGui/qfontmetrics.h \ |
- /usr/include/qt4/QtGui/qfontinfo.h /usr/include/qt4/QtGui/qsizepolicy.h \ |
- /usr/include/qt4/QtGui/qcursor.h /usr/include/qt4/QtGui/qkeysequence.h \ |
- /usr/include/qt4/QtGui/qtabwidget.h /usr/include/qt4/QtGui/qicon.h \ |
- /usr/include/qt4/QtGui/QFileDialog /usr/include/qt4/QtGui/qfiledialog.h \ |
- /usr/include/qt4/QtCore/qdir.h /usr/include/qt4/QtCore/qfileinfo.h \ |
- /usr/include/qt4/QtCore/qfile.h /usr/include/qt4/QtGui/qdialog.h \ |
- ../ui_mainwindow.h /usr/include/qt4/QtCore/QVariant \ |
- /usr/include/qt4/QtCore/qvariant.h /usr/include/qt4/QtCore/qmetatype.h \ |
- /usr/include/qt4/QtCore/qmap.h /usr/include/qt4/QtCore/qhash.h \ |
- /usr/include/qt4/QtGui/QAction /usr/include/qt4/QtGui/qaction.h \ |
- /usr/include/qt4/QtCore/qvariant.h /usr/include/qt4/QtGui/qactiongroup.h \ |
- /usr/include/qt4/QtGui/qaction.h /usr/include/qt4/QtGui/QApplication \ |
- /usr/include/qt4/QtGui/qapplication.h \ |
- /usr/include/qt4/QtCore/qcoreapplication.h \ |
- /usr/include/qt4/QtCore/qcoreevent.h \ |
- /usr/include/qt4/QtCore/qeventloop.h /usr/include/qt4/QtGui/QButtonGroup \ |
- /usr/include/qt4/QtGui/qbuttongroup.h /usr/include/qt4/QtGui/QHeaderView \ |
- /usr/include/qt4/QtGui/qheaderview.h \ |
- /usr/include/qt4/QtGui/qabstractitemview.h \ |
- /usr/include/qt4/QtGui/qabstractscrollarea.h \ |
- /usr/include/qt4/QtGui/qframe.h \ |
- /usr/include/qt4/QtCore/qabstractitemmodel.h \ |
- /usr/include/qt4/QtGui/qitemselectionmodel.h \ |
- /usr/include/qt4/QtCore/qset.h \ |
- /usr/include/qt4/QtGui/qabstractitemdelegate.h \ |
- /usr/include/qt4/QtGui/qstyleoption.h \ |
- /usr/include/qt4/QtGui/qabstractspinbox.h \ |
- /usr/include/qt4/QtGui/qvalidator.h /usr/include/qt4/QtCore/qlocale.h \ |
- /usr/include/qt4/QtGui/qslider.h \ |
- /usr/include/qt4/QtGui/qabstractslider.h /usr/include/qt4/QtGui/qstyle.h \ |
- /usr/include/qt4/QtGui/qtabbar.h /usr/include/qt4/QtGui/qrubberband.h \ |
- /usr/include/qt4/QtGui/QMenuBar /usr/include/qt4/QtGui/qmenubar.h \ |
- /usr/include/qt4/QtGui/qmenu.h /usr/include/qt4/QtGui/QPushButton \ |
- /usr/include/qt4/QtGui/qpushbutton.h \ |
- /usr/include/qt4/QtGui/qabstractbutton.h \ |
- /usr/include/qt4/QtGui/QStatusBar /usr/include/qt4/QtGui/qstatusbar.h \ |
- /usr/include/qt4/QtGui/QToolBar /usr/include/qt4/QtGui/qtoolbar.h \ |
- /usr/include/qt4/QtGui/QWidget /usr/include/qt4/QtGui/qwidget.h |
- |
-../mainwindow.h: |
- |
-/usr/include/qt4/QtGui/QMainWindow: |
- |
-/usr/include/qt4/QtGui/qmainwindow.h: |
- |
-/usr/include/qt4/QtGui/qwidget.h: |
- |
-/usr/include/qt4/QtCore/qconfig.h: |
- |
-/usr/include/qt4/QtGui/qwindowdefs.h: |
- |
-/usr/include/qt4/QtCore/qobjectdefs.h: |
- |
-/usr/include/qt4/QtCore/qnamespace.h: |
- |
-/usr/include/qt4/QtCore/qglobal.h: |
- |
-/usr/include/qt4/QtCore/qfeatures.h: |
- |
-/usr/include/qt4/QtCore/qobject.h: |
- |
-/usr/include/qt4/QtCore/qstring.h: |
- |
-/usr/include/qt4/QtCore/qchar.h: |
- |
-/usr/include/qt4/QtCore/qbytearray.h: |
- |
-/usr/include/qt4/QtCore/qatomic.h: |
- |
-/usr/include/qt4/QtCore/qbasicatomic.h: |
- |
-/usr/include/qt4/QtCore/qatomic_arch.h: |
- |
-/usr/include/qt4/QtCore/qatomic_i386.h: |
- |
-/usr/include/qt4/QtCore/qlist.h: |
- |
-/usr/include/qt4/QtCore/qiterator.h: |
- |
-/usr/include/qt4/QtCore/qalgorithms.h: |
- |
-/usr/include/qt4/QtCore/qscopedpointer.h: |
- |
-/usr/include/qt4/QtCore/qmargins.h: |
- |
-/usr/include/qt4/QtGui/qpaintdevice.h: |
- |
-/usr/include/qt4/QtCore/qrect.h: |
- |
-/usr/include/qt4/QtCore/qsize.h: |
- |
-/usr/include/qt4/QtCore/qpoint.h: |
- |
-/usr/include/qt4/QtGui/qpalette.h: |
- |
-/usr/include/qt4/QtGui/qcolor.h: |
- |
-/usr/include/qt4/QtGui/qrgb.h: |
- |
-/usr/include/qt4/QtCore/qstringlist.h: |
- |
-/usr/include/qt4/QtCore/qdatastream.h: |
- |
-/usr/include/qt4/QtCore/qiodevice.h: |
- |
-/usr/include/qt4/QtCore/qregexp.h: |
- |
-/usr/include/qt4/QtCore/qstringmatcher.h: |
- |
-/usr/include/qt4/QtGui/qbrush.h: |
- |
-/usr/include/qt4/QtCore/qpair.h: |
- |
-/usr/include/qt4/QtCore/qvector.h: |
- |
-/usr/include/qt4/QtGui/qmatrix.h: |
- |
-/usr/include/qt4/QtGui/qpolygon.h: |
- |
-/usr/include/qt4/QtGui/qregion.h: |
- |
-/usr/include/qt4/QtCore/qline.h: |
- |
-/usr/include/qt4/QtGui/qtransform.h: |
- |
-/usr/include/qt4/QtGui/qpainterpath.h: |
- |
-/usr/include/qt4/QtGui/qimage.h: |
- |
-/usr/include/qt4/QtGui/qpixmap.h: |
- |
-/usr/include/qt4/QtCore/qsharedpointer.h: |
- |
-/usr/include/qt4/QtCore/qshareddata.h: |
- |
-/usr/include/qt4/QtCore/qsharedpointer_impl.h: |
- |
-/usr/include/qt4/QtGui/qfont.h: |
- |
-/usr/include/qt4/QtGui/qfontmetrics.h: |
- |
-/usr/include/qt4/QtGui/qfontinfo.h: |
- |
-/usr/include/qt4/QtGui/qsizepolicy.h: |
- |
-/usr/include/qt4/QtGui/qcursor.h: |
- |
-/usr/include/qt4/QtGui/qkeysequence.h: |
- |
-/usr/include/qt4/QtGui/qtabwidget.h: |
- |
-/usr/include/qt4/QtGui/qicon.h: |
- |
-/usr/include/qt4/QtGui/QFileDialog: |
- |
-/usr/include/qt4/QtGui/qfiledialog.h: |
- |
-/usr/include/qt4/QtCore/qdir.h: |
- |
-/usr/include/qt4/QtCore/qfileinfo.h: |
- |
-/usr/include/qt4/QtCore/qfile.h: |
- |
-/usr/include/qt4/QtGui/qdialog.h: |
- |
-../ui_mainwindow.h: |
- |
-/usr/include/qt4/QtCore/QVariant: |
- |
-/usr/include/qt4/QtCore/qvariant.h: |
- |
-/usr/include/qt4/QtCore/qmetatype.h: |
- |
-/usr/include/qt4/QtCore/qmap.h: |
- |
-/usr/include/qt4/QtCore/qhash.h: |
- |
-/usr/include/qt4/QtGui/QAction: |
- |
-/usr/include/qt4/QtGui/qaction.h: |
- |
-/usr/include/qt4/QtCore/qvariant.h: |
- |
-/usr/include/qt4/QtGui/qactiongroup.h: |
- |
-/usr/include/qt4/QtGui/qaction.h: |
- |
-/usr/include/qt4/QtGui/QApplication: |
- |
-/usr/include/qt4/QtGui/qapplication.h: |
- |
-/usr/include/qt4/QtCore/qcoreapplication.h: |
- |
-/usr/include/qt4/QtCore/qcoreevent.h: |
- |
-/usr/include/qt4/QtCore/qeventloop.h: |
- |
-/usr/include/qt4/QtGui/QButtonGroup: |
- |
-/usr/include/qt4/QtGui/qbuttongroup.h: |
- |
-/usr/include/qt4/QtGui/QHeaderView: |
- |
-/usr/include/qt4/QtGui/qheaderview.h: |
- |
-/usr/include/qt4/QtGui/qabstractitemview.h: |
- |
-/usr/include/qt4/QtGui/qabstractscrollarea.h: |
- |
-/usr/include/qt4/QtGui/qframe.h: |
- |
-/usr/include/qt4/QtCore/qabstractitemmodel.h: |
- |
-/usr/include/qt4/QtGui/qitemselectionmodel.h: |
- |
-/usr/include/qt4/QtCore/qset.h: |
- |
-/usr/include/qt4/QtGui/qabstractitemdelegate.h: |
- |
-/usr/include/qt4/QtGui/qstyleoption.h: |
- |
-/usr/include/qt4/QtGui/qabstractspinbox.h: |
- |
-/usr/include/qt4/QtGui/qvalidator.h: |
- |
-/usr/include/qt4/QtCore/qlocale.h: |
- |
-/usr/include/qt4/QtGui/qslider.h: |
- |
-/usr/include/qt4/QtGui/qabstractslider.h: |
- |
-/usr/include/qt4/QtGui/qstyle.h: |
- |
-/usr/include/qt4/QtGui/qtabbar.h: |
- |
-/usr/include/qt4/QtGui/qrubberband.h: |
- |
-/usr/include/qt4/QtGui/QMenuBar: |
- |
-/usr/include/qt4/QtGui/qmenubar.h: |
- |
-/usr/include/qt4/QtGui/qmenu.h: |
- |
-/usr/include/qt4/QtGui/QPushButton: |
- |
-/usr/include/qt4/QtGui/qpushbutton.h: |
- |
-/usr/include/qt4/QtGui/qabstractbutton.h: |
- |
-/usr/include/qt4/QtGui/QStatusBar: |
- |
-/usr/include/qt4/QtGui/qstatusbar.h: |
- |
-/usr/include/qt4/QtGui/QToolBar: |
- |
-/usr/include/qt4/QtGui/qtoolbar.h: |
- |
-/usr/include/qt4/QtGui/QWidget: |
- |
-/usr/include/qt4/QtGui/qwidget.h: |
Index: trunk/Chapter 01/myQtGUIApp/Debug/subdir.mk |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Debug/subdir.mk (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Debug/subdir.mk (nonexistent) |
@@ -1,35 +0,0 @@ |
-################################################################################ |
-# Automatically-generated file. Do not edit! |
-################################################################################ |
- |
-# Add inputs and outputs from these tool invocations to the build variables |
-O_SRCS += \ |
-../main.o \ |
-../mainwindow.o \ |
-../moc_mainwindow.o |
- |
-CPP_SRCS += \ |
-../main.cpp \ |
-../mainwindow.cpp \ |
-../moc_mainwindow.cpp |
- |
-OBJS += \ |
-./main.o \ |
-./mainwindow.o \ |
-./moc_mainwindow.o |
- |
-CPP_DEPS += \ |
-./main.d \ |
-./mainwindow.d \ |
-./moc_mainwindow.d |
- |
- |
-# Each subdirectory must supply rules for building sources it contributes |
-%.o: ../%.cpp |
- @echo 'Building file: $<' |
- @echo 'Invoking: GCC C++ Compiler' |
- g++ -I/usr/share/qt4/mkspecs/linux-g++ -I"/home/pelinux/workspace/OpenCV-Cookbook/Chapter 01/myQtGUIApp" -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" |
- @echo 'Finished building: $<' |
- @echo ' ' |
- |
- |
Index: trunk/Chapter 01/myQtGUIApp/.cproject |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/.cproject (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/.cproject (nonexistent) |
@@ -1,143 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> |
- <storageModule moduleId="org.eclipse.cdt.core.settings"> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1645441074"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1645441074" moduleId="org.eclipse.cdt.core.settings" name="Debug"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1645441074" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1645441074." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1606380419" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.1670021672" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/> |
- <builder buildPath="${workspace_loc:/OpenCV2-Qt1}" id="cdt.managedbuild.target.gnu.builder.exe.debug.1011953089" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.2090597659" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1032837158" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"> |
- <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.573502388" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.1209425335" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.option.include.paths.1770898242" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> |
- <listOptionValue builtIn="false" value="/usr/share/qt4/mkspecs/linux-g++"/> |
- <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/> |
- <listOptionValue builtIn="false" value="/usr/include/qt4/QtCore"/> |
- <listOptionValue builtIn="false" value="/usr/include/qt4/QtGui"/> |
- <listOptionValue builtIn="false" value="/usr/include/qt4"/> |
- </option> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1624580350" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1918068914" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"> |
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1865251066" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.debug.option.debugging.level.597565451" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1672718572" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1382385520" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1872849154" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"> |
- <option id="gnu.cpp.link.option.paths.1185357723" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> |
- <listOptionValue builtIn="false" value="/usr/lib/i386-linux-gnu"/> |
- </option> |
- <option id="gnu.cpp.link.option.libs.1652959658" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> |
- <listOptionValue builtIn="false" value="opencv_core"/> |
- <listOptionValue builtIn="false" value="opencv_highgui"/> |
- <listOptionValue builtIn="false" value="opencv_imgproc"/> |
- <listOptionValue builtIn="false" value="opencv_features2d"/> |
- <listOptionValue builtIn="false" value="opencv_calib3d"/> |
- <listOptionValue builtIn="false" value="QtGui"/> |
- <listOptionValue builtIn="false" value="QtCore"/> |
- <listOptionValue builtIn="false" value="pthread"/> |
- </option> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.96863366" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.1252506979" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1585007037" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.release.1794137892"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.1794137892" moduleId="org.eclipse.cdt.core.settings" name="Release"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.1794137892" name="Release" parent="cdt.managedbuild.config.gnu.exe.release"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.release.1794137892." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.509327484" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.684886791" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/> |
- <builder buildPath="${workspace_loc:/OpenCV2-Qt1}/Release" id="cdt.managedbuild.target.gnu.builder.exe.release.1458431195" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.1426403978" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.1299867626" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release"> |
- <option id="gnu.cpp.compiler.exe.release.option.optimization.level.255160892" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.release.option.debugging.level.1319380482" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1119472496" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.497950565" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release"> |
- <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.1762202518" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.release.option.debugging.level.1262179083" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.192529110" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.1190445188" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.2080015258" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release"> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1966954196" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.69517468" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1010627966" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <project id="OpenCV2-Qt1.cdt.managedbuild.target.gnu.exe.1674617357" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/> |
- </storageModule> |
- <storageModule moduleId="scannerConfiguration"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1645441074;cdt.managedbuild.config.gnu.exe.debug.1645441074.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1918068914;cdt.managedbuild.tool.gnu.c.compiler.input.1672718572"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1645441074;cdt.managedbuild.config.gnu.exe.debug.1645441074.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1032837158;cdt.managedbuild.tool.gnu.cpp.compiler.input.1624580350"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1794137892;cdt.managedbuild.config.gnu.exe.release.1794137892.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.497950565;cdt.managedbuild.tool.gnu.c.compiler.input.192529110"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1794137892;cdt.managedbuild.config.gnu.exe.release.1794137892.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.1299867626;cdt.managedbuild.tool.gnu.cpp.compiler.input.1119472496"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> |
- <storageModule moduleId="refreshScope" versionNumber="2"> |
- <configuration configurationName="Release"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV2-Qt1"/> |
- </configuration> |
- <configuration configurationName="Debug"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV2-Qt1"/> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> |
-</cproject> |
/trunk/Chapter 01/myQtGUIApp/.cproject |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/mainwindow.ui |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/mainwindow.ui (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/mainwindow.ui (nonexistent) |
@@ -1,67 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8"?> |
-<ui version="4.0"> |
- <class>MainWindow</class> |
- <widget class="QMainWindow" name="MainWindow"> |
- <property name="geometry"> |
- <rect> |
- <x>0</x> |
- <y>0</y> |
- <width>262</width> |
- <height>214</height> |
- </rect> |
- </property> |
- <property name="windowTitle"> |
- <string>My Qt Application</string> |
- </property> |
- <widget class="QWidget" name="centralWidget"> |
- <widget class="QPushButton" name="pushButton"> |
- <property name="geometry"> |
- <rect> |
- <x>60</x> |
- <y>20</y> |
- <width>141</width> |
- <height>51</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Open Image</string> |
- </property> |
- </widget> |
- <widget class="QPushButton" name="pushButton_2"> |
- <property name="geometry"> |
- <rect> |
- <x>60</x> |
- <y>90</y> |
- <width>141</width> |
- <height>51</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Process</string> |
- </property> |
- </widget> |
- </widget> |
- <widget class="QMenuBar" name="menuBar"> |
- <property name="geometry"> |
- <rect> |
- <x>0</x> |
- <y>0</y> |
- <width>262</width> |
- <height>25</height> |
- </rect> |
- </property> |
- </widget> |
- <widget class="QToolBar" name="mainToolBar"> |
- <attribute name="toolBarArea"> |
- <enum>TopToolBarArea</enum> |
- </attribute> |
- <attribute name="toolBarBreak"> |
- <bool>false</bool> |
- </attribute> |
- </widget> |
- <widget class="QStatusBar" name="statusBar"/> |
- </widget> |
- <layoutdefault spacing="6" margin="11"/> |
- <resources/> |
- <connections/> |
-</ui> |
Index: trunk/Chapter 01/myQtGUIApp/moc_mainwindow.cpp |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/moc_mainwindow.cpp (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/moc_mainwindow.cpp (nonexistent) |
@@ -1,96 +0,0 @@ |
-/**************************************************************************** |
-** Meta object code from reading C++ file 'mainwindow.h' |
-** |
-** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6) |
-** |
-** WARNING! All changes made in this file will be lost! |
-*****************************************************************************/ |
- |
-#include "mainwindow.h" |
-#if !defined(Q_MOC_OUTPUT_REVISION) |
-#error "The header file 'mainwindow.h' doesn't include <QObject>." |
-#elif Q_MOC_OUTPUT_REVISION != 63 |
-#error "This file was generated using the moc from 4.8.6. It" |
-#error "cannot be used with the include files from this version of Qt." |
-#error "(The moc has changed too much.)" |
-#endif |
- |
-QT_BEGIN_MOC_NAMESPACE |
-static const uint qt_meta_data_MainWindow[] = { |
- |
- // content: |
- 6, // revision |
- 0, // classname |
- 0, 0, // classinfo |
- 2, 14, // methods |
- 0, 0, // properties |
- 0, 0, // enums/sets |
- 0, 0, // constructors |
- 0, // flags |
- 0, // signalCount |
- |
- // slots: signature, parameters, type, tag, flags |
- 12, 11, 11, 11, 0x08, |
- 38, 11, 11, 11, 0x08, |
- |
- 0 // eod |
-}; |
- |
-static const char qt_meta_stringdata_MainWindow[] = { |
- "MainWindow\0\0on_pushButton_2_clicked()\0" |
- "on_pushButton_clicked()\0" |
-}; |
- |
-void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) |
-{ |
- if (_c == QMetaObject::InvokeMetaMethod) { |
- Q_ASSERT(staticMetaObject.cast(_o)); |
- MainWindow *_t = static_cast<MainWindow *>(_o); |
- switch (_id) { |
- case 0: _t->on_pushButton_2_clicked(); break; |
- case 1: _t->on_pushButton_clicked(); break; |
- default: ; |
- } |
- } |
- Q_UNUSED(_a); |
-} |
- |
-const QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = { |
- 0, qt_static_metacall |
-}; |
- |
-const QMetaObject MainWindow::staticMetaObject = { |
- { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow, |
- qt_meta_data_MainWindow, &staticMetaObjectExtraData } |
-}; |
- |
-#ifdef Q_NO_DATA_RELOCATION |
-const QMetaObject &MainWindow::getStaticMetaObject() { return staticMetaObject; } |
-#endif //Q_NO_DATA_RELOCATION |
- |
-const QMetaObject *MainWindow::metaObject() const |
-{ |
- return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; |
-} |
- |
-void *MainWindow::qt_metacast(const char *_clname) |
-{ |
- if (!_clname) return 0; |
- if (!strcmp(_clname, qt_meta_stringdata_MainWindow)) |
- return static_cast<void*>(const_cast< MainWindow*>(this)); |
- return QMainWindow::qt_metacast(_clname); |
-} |
- |
-int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) |
-{ |
- _id = QMainWindow::qt_metacall(_c, _id, _a); |
- if (_id < 0) |
- return _id; |
- if (_c == QMetaObject::InvokeMetaMethod) { |
- if (_id < 2) |
- qt_static_metacall(this, _c, _id, _a); |
- _id -= 2; |
- } |
- return _id; |
-} |
-QT_END_MOC_NAMESPACE |
/trunk/Chapter 01/myQtGUIApp/moc_mainwindow.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/Makefile.Release |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Makefile.Release (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Makefile.Release (nonexistent) |
@@ -1,176 +0,0 @@ |
-############################################################################# |
-# Makefile for building: myQtGUIApp |
-# Generated by qmake (2.01a) (Qt 4.6.3) on: Mon Feb 28 15:14:16 2011 |
-# Project: myQtGUIApp.pro |
-# Template: app |
-############################################################################# |
- |
-####### Compiler, tools and options |
- |
-CC = cl |
-CXX = cl |
-DEFINES = -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT |
-CFLAGS = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -W3 $(DEFINES) |
-CXXFLAGS = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -GR -EHsc -W3 -w34100 -w34189 $(DEFINES) |
-INCPATH = -I"..\..\Qt\4.6.3\include\QtCore" -I"..\..\Qt\4.6.3\include\QtGui" -I"..\..\Qt\4.6.3\include" -I"..\..\OpenCV2.2\include" -I"..\..\Qt\4.6.3\include\ActiveQt" -I"release" -I"." -I"..\..\Qt\4.6.3\mkspecs\win32-msvc2008" |
-LINK = link |
-LFLAGS = /LIBPATH:"c:\Qt\4.6.3\lib" /NOLOGO /INCREMENTAL:NO /MANIFEST /MANIFESTFILE:"release\myQtGUIApp.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" |
-LIBS = c:\Qt\4.6.3\lib\qtmain.lib /LIBPATH:C:\OpenCV2.2\lib C:\OpenCV2.2\lib\opencv_core220.lib C:\OpenCV2.2\lib\opencv_highgui220.lib C:\OpenCV2.2\lib\opencv_imgproc220.lib C:\OpenCV2.2\lib\opencv_features2d220.lib C:\OpenCV2.2\lib\opencv_calib3d220.lib c:\Qt\4.6.3\lib\QtGui4.lib c:\Qt\4.6.3\lib\QtCore4.lib |
-QMAKE = c:\Qt\4.6.3\bin\qmake.exe |
-IDC = c:\Qt\4.6.3\bin\idc.exe |
-IDL = midl |
-ZIP = zip -r -9 |
-DEF_FILE = |
-RES_FILE = |
-COPY = copy /y |
-COPY_FILE = $(COPY) |
-COPY_DIR = xcopy /s /q /y /i |
-DEL_FILE = del |
-DEL_DIR = rmdir |
-MOVE = move |
-CHK_DIR_EXISTS= if not exist |
-MKDIR = mkdir |
-INSTALL_FILE = $(COPY_FILE) |
-INSTALL_PROGRAM = $(COPY_FILE) |
-INSTALL_DIR = $(COPY_DIR) |
- |
-####### Output directory |
- |
-OBJECTS_DIR = release |
- |
-####### Files |
- |
-SOURCES = main.cpp \ |
- mainwindow.cpp release\moc_mainwindow.cpp |
-OBJECTS = release\main.obj \ |
- release\mainwindow.obj \ |
- release\moc_mainwindow.obj |
-DIST = |
-QMAKE_TARGET = myQtGUIApp |
-DESTDIR = release\ #avoid trailing-slash linebreak |
-TARGET = myQtGUIApp.exe |
-DESTDIR_TARGET = release\myQtGUIApp.exe |
- |
-####### Implicit rules |
- |
-.SUFFIXES: .c .cpp .cc .cxx |
- |
-{release}.cpp{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{release}.cc{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{release}.cxx{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{release}.c{release\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.cpp{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.cc{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.cxx{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.c{release\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-####### Build rules |
- |
-first: all |
-all: Makefile.Release $(DESTDIR_TARGET) |
- |
-$(DESTDIR_TARGET): ui_mainwindow.h $(OBJECTS) |
- $(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<< |
- $(OBJECTS) $(LIBS) |
-<< |
- mt.exe -nologo -manifest "release\myQtGUIApp.intermediate.manifest" -outputresource:$(DESTDIR_TARGET);1 |
- |
- |
- |
-qmake: FORCE |
- @$(QMAKE) -spec ..\..\Qt\4.6.3\mkspecs\win32-msvc2008 -win32 CONFIG+=release -o Makefile.Release myQtGUIApp.pro |
- |
-dist: |
- $(ZIP) myQtGUIApp.zip $(SOURCES) $(DIST) myQtGUIApp.pro ..\..\Qt\4.6.3\mkspecs\qconfig.pri ..\..\Qt\4.6.3\mkspecs\features\qt_functions.prf ..\..\Qt\4.6.3\mkspecs\features\qt_config.prf ..\..\Qt\4.6.3\mkspecs\features\exclusive_builds.prf ..\..\Qt\4.6.3\mkspecs\features\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\release.prf ..\..\Qt\4.6.3\mkspecs\features\debug_and_release.prf ..\..\Qt\4.6.3\mkspecs\features\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\build_pass.prf ..\..\Qt\4.6.3\mkspecs\features\win32\rtti.prf ..\..\Qt\4.6.3\mkspecs\features\win32\exceptions.prf ..\..\Qt\4.6.3\mkspecs\features\win32\stl.prf ..\..\Qt\4.6.3\mkspecs\features\shared.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_exe.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_dll.prf ..\..\Qt\4.6.3\mkspecs\features\warn_on.prf ..\..\Qt\4.6.3\mkspecs\features\qt.prf ..\..\Qt\4.6.3\mkspecs\features\win32\thread.prf ..\..\Qt\4.6.3\mkspecs\features\moc.prf ..\..\Qt\4.6.3\mkspecs\features\win32\windows.prf ..\..\Qt\4.6.3\mkspecs\features\resources.prf ..\..\Qt\4.6.3\mkspecs\features\uic.prf ..\..\Qt\4.6.3\mkspecs\features\yacc.prf ..\..\Qt\4.6.3\mkspecs\features\lex.prf ..\..\Qt\4.6.3\mkspecs\features\incredibuild_xge.prf ..\..\Qt\4.6.3\mkspecs\features\include_source_dir.prf c:\Qt\4.6.3\lib\qtmain.prl HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES |
- |
-clean: compiler_clean |
- -$(DEL_FILE) release\main.obj release\mainwindow.obj release\moc_mainwindow.obj |
- -$(DEL_FILE) release\myQtGUIApp.intermediate.manifest release\myQtGUIApp.exp |
- |
-distclean: clean |
- -$(DEL_FILE) $(DESTDIR_TARGET) |
- -$(DEL_FILE) Makefile.Release |
- |
-check: first |
- |
-mocclean: compiler_moc_header_clean compiler_moc_source_clean |
- |
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all |
- |
-compiler_moc_header_make_all: release\moc_mainwindow.cpp |
-compiler_moc_header_clean: |
- -$(DEL_FILE) release\moc_mainwindow.cpp |
-release\moc_mainwindow.cpp: mainwindow.h |
- C:\Qt\4.6.3\bin\moc.exe $(DEFINES) $(INCPATH) -D_MSC_VER=1500 -DWIN32 mainwindow.h -o release\moc_mainwindow.cpp |
- |
-compiler_rcc_make_all: |
-compiler_rcc_clean: |
-compiler_image_collection_make_all: qmake_image_collection.cpp |
-compiler_image_collection_clean: |
- -$(DEL_FILE) qmake_image_collection.cpp |
-compiler_moc_source_make_all: |
-compiler_moc_source_clean: |
-compiler_uic_make_all: ui_mainwindow.h |
-compiler_uic_clean: |
- -$(DEL_FILE) ui_mainwindow.h |
-ui_mainwindow.h: mainwindow.ui |
- c:\Qt\4.6.3\bin\uic.exe mainwindow.ui -o ui_mainwindow.h |
- |
-compiler_yacc_decl_make_all: |
-compiler_yacc_decl_clean: |
-compiler_yacc_impl_make_all: |
-compiler_yacc_impl_clean: |
-compiler_lex_make_all: |
-compiler_lex_clean: |
-compiler_clean: compiler_moc_header_clean compiler_uic_clean |
- |
- |
- |
-####### Compile |
- |
-release\main.obj: main.cpp mainwindow.h |
- |
-release\mainwindow.obj: mainwindow.cpp mainwindow.h \ |
- ui_mainwindow.h |
- |
-release\moc_mainwindow.obj: release\moc_mainwindow.cpp |
- |
-####### Install |
- |
-install: FORCE |
- |
-uninstall: FORCE |
- |
-FORCE: |
- |
Index: trunk/Chapter 01/myQtGUIApp/mainwindow.cpp |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/mainwindow.cpp (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/mainwindow.cpp (nonexistent) |
@@ -1,47 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include "mainwindow.h" |
-#include "ui_mainwindow.h" |
- |
-MainWindow::MainWindow(QWidget *parent) |
- : QMainWindow(parent), ui(new Ui::MainWindow) |
-{ |
- ui->setupUi(this); |
-} |
- |
-MainWindow::~MainWindow() |
-{ |
- delete ui; |
-} |
- |
-void MainWindow::on_pushButton_clicked() |
-{ |
- QString fileName = QFileDialog::getOpenFileName(this, |
- tr("Open Image"), ".", tr("Image Files (*.png *.jpg *.bmp)")); |
- |
- image= cv::imread(fileName.toAscii().data()); |
- cv::namedWindow("Original Image"); |
- cv::imshow("Original Image", image); |
-} |
- |
-void MainWindow::on_pushButton_2_clicked() |
-{ |
- cv::flip(image,image,1); |
- cv::namedWindow("Output Image"); |
- cv::imshow("Output Image", image); |
-} |
/trunk/Chapter 01/myQtGUIApp/mainwindow.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/Makefile |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Makefile (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Makefile (nonexistent) |
@@ -1,235 +0,0 @@ |
-############################################################################# |
-# Makefile for building: myQtGUIApp |
-# Generated by qmake (2.01a) (Qt 4.8.6) on: Sa. Jan 25 02:53:28 2014 |
-# Project: myQtGUIApp.pro |
-# Template: app |
-# Command: /usr/lib/i386-linux-gnu/qt4/bin/qmake -o Makefile myQtGUIApp.pro |
-############################################################################# |
- |
-####### Compiler, tools and options |
- |
-CC = gcc |
-CXX = g++ |
-DEFINES = -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED |
-CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) |
-CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) |
-INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -IC:\OpenCV2.2\include -I. -I. |
-LINK = g++ |
-LFLAGS = -Wl,-O1 |
-LIBS = $(SUBLIBS) -L/usr/lib/i386-linux-gnu -LC:\OpenCV2.2\lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_features2d -lopencv_calib3d -lQtGui -lQtCore -lpthread |
-AR = ar cqs |
-RANLIB = |
-QMAKE = /usr/lib/i386-linux-gnu/qt4/bin/qmake |
-TAR = tar -cf |
-COMPRESS = gzip -9f |
-COPY = cp -f |
-SED = sed |
-COPY_FILE = $(COPY) |
-COPY_DIR = $(COPY) -r |
-STRIP = strip |
-INSTALL_FILE = install -m 644 -p |
-INSTALL_DIR = $(COPY_DIR) |
-INSTALL_PROGRAM = install -m 755 -p |
-DEL_FILE = rm -f |
-SYMLINK = ln -f -s |
-DEL_DIR = rmdir |
-MOVE = mv -f |
-CHK_DIR_EXISTS= test -d |
-MKDIR = mkdir -p |
- |
-####### Output directory |
- |
-OBJECTS_DIR = ./ |
- |
-####### Files |
- |
-SOURCES = main.cpp \ |
- mainwindow.cpp moc_mainwindow.cpp |
-OBJECTS = main.o \ |
- mainwindow.o \ |
- moc_mainwindow.o |
-DIST = /usr/share/qt4/mkspecs/common/unix.conf \ |
- /usr/share/qt4/mkspecs/common/linux.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base-unix.conf \ |
- /usr/share/qt4/mkspecs/common/g++-base.conf \ |
- /usr/share/qt4/mkspecs/common/g++-unix.conf \ |
- /usr/share/qt4/mkspecs/qconfig.pri \ |
- /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ |
- /usr/share/qt4/mkspecs/features/qt_functions.prf \ |
- /usr/share/qt4/mkspecs/features/qt_config.prf \ |
- /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ |
- /usr/share/qt4/mkspecs/features/default_pre.prf \ |
- /usr/share/qt4/mkspecs/features/release.prf \ |
- /usr/share/qt4/mkspecs/features/default_post.prf \ |
- /usr/share/qt4/mkspecs/features/shared.prf \ |
- /usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \ |
- /usr/share/qt4/mkspecs/features/warn_on.prf \ |
- /usr/share/qt4/mkspecs/features/qt.prf \ |
- /usr/share/qt4/mkspecs/features/unix/thread.prf \ |
- /usr/share/qt4/mkspecs/features/moc.prf \ |
- /usr/share/qt4/mkspecs/features/resources.prf \ |
- /usr/share/qt4/mkspecs/features/uic.prf \ |
- /usr/share/qt4/mkspecs/features/yacc.prf \ |
- /usr/share/qt4/mkspecs/features/lex.prf \ |
- /usr/share/qt4/mkspecs/features/include_source_dir.prf \ |
- myQtGUIApp.pro |
-QMAKE_TARGET = myQtGUIApp |
-DESTDIR = |
-TARGET = myQtGUIApp |
- |
-first: all |
-####### Implicit rules |
- |
-.SUFFIXES: .o .c .cpp .cc .cxx .C |
- |
-.cpp.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.cc.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.cxx.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.C.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.c.o: |
- $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-####### Build rules |
- |
-all: Makefile $(TARGET) |
- |
-$(TARGET): ui_mainwindow.h $(OBJECTS) |
- $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) |
- |
-Makefile: myQtGUIApp.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/unix.conf \ |
- /usr/share/qt4/mkspecs/common/linux.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base-unix.conf \ |
- /usr/share/qt4/mkspecs/common/g++-base.conf \ |
- /usr/share/qt4/mkspecs/common/g++-unix.conf \ |
- /usr/share/qt4/mkspecs/qconfig.pri \ |
- /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ |
- /usr/share/qt4/mkspecs/features/qt_functions.prf \ |
- /usr/share/qt4/mkspecs/features/qt_config.prf \ |
- /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ |
- /usr/share/qt4/mkspecs/features/default_pre.prf \ |
- /usr/share/qt4/mkspecs/features/release.prf \ |
- /usr/share/qt4/mkspecs/features/default_post.prf \ |
- /usr/share/qt4/mkspecs/features/shared.prf \ |
- /usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \ |
- /usr/share/qt4/mkspecs/features/warn_on.prf \ |
- /usr/share/qt4/mkspecs/features/qt.prf \ |
- /usr/share/qt4/mkspecs/features/unix/thread.prf \ |
- /usr/share/qt4/mkspecs/features/moc.prf \ |
- /usr/share/qt4/mkspecs/features/resources.prf \ |
- /usr/share/qt4/mkspecs/features/uic.prf \ |
- /usr/share/qt4/mkspecs/features/yacc.prf \ |
- /usr/share/qt4/mkspecs/features/lex.prf \ |
- /usr/share/qt4/mkspecs/features/include_source_dir.prf \ |
- /usr/lib/i386-linux-gnu/libQtGui.prl \ |
- /usr/lib/i386-linux-gnu/libQtCore.prl |
- $(QMAKE) -o Makefile myQtGUIApp.pro |
-/usr/share/qt4/mkspecs/common/unix.conf: |
-/usr/share/qt4/mkspecs/common/linux.conf: |
-/usr/share/qt4/mkspecs/common/gcc-base.conf: |
-/usr/share/qt4/mkspecs/common/gcc-base-unix.conf: |
-/usr/share/qt4/mkspecs/common/g++-base.conf: |
-/usr/share/qt4/mkspecs/common/g++-unix.conf: |
-/usr/share/qt4/mkspecs/qconfig.pri: |
-/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri: |
-/usr/share/qt4/mkspecs/features/qt_functions.prf: |
-/usr/share/qt4/mkspecs/features/qt_config.prf: |
-/usr/share/qt4/mkspecs/features/exclusive_builds.prf: |
-/usr/share/qt4/mkspecs/features/default_pre.prf: |
-/usr/share/qt4/mkspecs/features/release.prf: |
-/usr/share/qt4/mkspecs/features/default_post.prf: |
-/usr/share/qt4/mkspecs/features/shared.prf: |
-/usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf: |
-/usr/share/qt4/mkspecs/features/warn_on.prf: |
-/usr/share/qt4/mkspecs/features/qt.prf: |
-/usr/share/qt4/mkspecs/features/unix/thread.prf: |
-/usr/share/qt4/mkspecs/features/moc.prf: |
-/usr/share/qt4/mkspecs/features/resources.prf: |
-/usr/share/qt4/mkspecs/features/uic.prf: |
-/usr/share/qt4/mkspecs/features/yacc.prf: |
-/usr/share/qt4/mkspecs/features/lex.prf: |
-/usr/share/qt4/mkspecs/features/include_source_dir.prf: |
-/usr/lib/i386-linux-gnu/libQtGui.prl: |
-/usr/lib/i386-linux-gnu/libQtCore.prl: |
-qmake: FORCE |
- @$(QMAKE) -o Makefile myQtGUIApp.pro |
- |
-dist: |
- @$(CHK_DIR_EXISTS) .tmp/myQtGUIApp1.0.0 || $(MKDIR) .tmp/myQtGUIApp1.0.0 |
- $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/myQtGUIApp1.0.0/ && $(COPY_FILE) --parents mainwindow.h .tmp/myQtGUIApp1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp .tmp/myQtGUIApp1.0.0/ && $(COPY_FILE) --parents mainwindow.ui .tmp/myQtGUIApp1.0.0/ && (cd `dirname .tmp/myQtGUIApp1.0.0` && $(TAR) myQtGUIApp1.0.0.tar myQtGUIApp1.0.0 && $(COMPRESS) myQtGUIApp1.0.0.tar) && $(MOVE) `dirname .tmp/myQtGUIApp1.0.0`/myQtGUIApp1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/myQtGUIApp1.0.0 |
- |
- |
-clean:compiler_clean |
- -$(DEL_FILE) $(OBJECTS) |
- -$(DEL_FILE) *~ core *.core |
- |
- |
-####### Sub-libraries |
- |
-distclean: clean |
- -$(DEL_FILE) $(TARGET) |
- -$(DEL_FILE) Makefile |
- |
- |
-check: first |
- |
-mocclean: compiler_moc_header_clean compiler_moc_source_clean |
- |
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all |
- |
-compiler_moc_header_make_all: moc_mainwindow.cpp |
-compiler_moc_header_clean: |
- -$(DEL_FILE) moc_mainwindow.cpp |
-moc_mainwindow.cpp: mainwindow.h |
- /usr/lib/i386-linux-gnu/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp |
- |
-compiler_rcc_make_all: |
-compiler_rcc_clean: |
-compiler_image_collection_make_all: qmake_image_collection.cpp |
-compiler_image_collection_clean: |
- -$(DEL_FILE) qmake_image_collection.cpp |
-compiler_moc_source_make_all: |
-compiler_moc_source_clean: |
-compiler_uic_make_all: ui_mainwindow.h |
-compiler_uic_clean: |
- -$(DEL_FILE) ui_mainwindow.h |
-ui_mainwindow.h: mainwindow.ui |
- /usr/lib/i386-linux-gnu/qt4/bin/uic mainwindow.ui -o ui_mainwindow.h |
- |
-compiler_yacc_decl_make_all: |
-compiler_yacc_decl_clean: |
-compiler_yacc_impl_make_all: |
-compiler_yacc_impl_clean: |
-compiler_lex_make_all: |
-compiler_lex_clean: |
-compiler_clean: compiler_moc_header_clean compiler_uic_clean |
- |
-####### Compile |
- |
-main.o: main.cpp mainwindow.h |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp |
- |
-mainwindow.o: mainwindow.cpp mainwindow.h \ |
- ui_mainwindow.h |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp |
- |
-moc_mainwindow.o: moc_mainwindow.cpp |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp |
- |
-####### Install |
- |
-install: FORCE |
- |
-uninstall: FORCE |
- |
-FORCE: |
- |
Index: trunk/Chapter 01/myQtGUIApp/ui_mainwindow.h |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/ui_mainwindow.h (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/ui_mainwindow.h (nonexistent) |
@@ -1,99 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-/******************************************************************************** |
-** Form generated from reading UI file 'mainwindow.ui' |
-** |
-** Created: Tue Jun 29 12:53:36 2010 |
-** by: Qt User Interface Compiler version 4.6.3 |
-** |
-** WARNING! All changes made in this file will be lost when recompiling UI file! |
-********************************************************************************/ |
- |
-#ifndef UI_MAINWINDOW_H |
-#define UI_MAINWINDOW_H |
- |
-#include <QtCore/QVariant> |
-#include <QtGui/QAction> |
-#include <QtGui/QApplication> |
-#include <QtGui/QButtonGroup> |
-#include <QtGui/QHeaderView> |
-#include <QtGui/QMainWindow> |
-#include <QtGui/QMenuBar> |
-#include <QtGui/QPushButton> |
-#include <QtGui/QStatusBar> |
-#include <QtGui/QToolBar> |
-#include <QtGui/QWidget> |
- |
-QT_BEGIN_NAMESPACE |
- |
-class Ui_MainWindow |
-{ |
-public: |
- QWidget *centralWidget; |
- QPushButton *pushButton; |
- QPushButton *pushButton_2; |
- QMenuBar *menuBar; |
- QToolBar *mainToolBar; |
- QStatusBar *statusBar; |
- |
- void setupUi(QMainWindow *MainWindow) |
- { |
- if (MainWindow->objectName().isEmpty()) |
- MainWindow->setObjectName(QString::fromUtf8("MainWindow")); |
- MainWindow->resize(262, 214); |
- centralWidget = new QWidget(MainWindow); |
- centralWidget->setObjectName(QString::fromUtf8("centralWidget")); |
- pushButton = new QPushButton(centralWidget); |
- pushButton->setObjectName(QString::fromUtf8("pushButton")); |
- pushButton->setGeometry(QRect(60, 20, 141, 51)); |
- pushButton_2 = new QPushButton(centralWidget); |
- pushButton_2->setObjectName(QString::fromUtf8("pushButton_2")); |
- pushButton_2->setGeometry(QRect(60, 90, 141, 51)); |
- MainWindow->setCentralWidget(centralWidget); |
- menuBar = new QMenuBar(MainWindow); |
- menuBar->setObjectName(QString::fromUtf8("menuBar")); |
- menuBar->setGeometry(QRect(0, 0, 262, 25)); |
- MainWindow->setMenuBar(menuBar); |
- mainToolBar = new QToolBar(MainWindow); |
- mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); |
- MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); |
- statusBar = new QStatusBar(MainWindow); |
- statusBar->setObjectName(QString::fromUtf8("statusBar")); |
- MainWindow->setStatusBar(statusBar); |
- |
- retranslateUi(MainWindow); |
- |
- QMetaObject::connectSlotsByName(MainWindow); |
- } // setupUi |
- |
- void retranslateUi(QMainWindow *MainWindow) |
- { |
- MainWindow->setWindowTitle(QApplication::translate("MainWindow", "My Qt Application", 0, QApplication::UnicodeUTF8)); |
- pushButton->setText(QApplication::translate("MainWindow", "Open Image", 0, QApplication::UnicodeUTF8)); |
- pushButton_2->setText(QApplication::translate("MainWindow", "Process", 0, QApplication::UnicodeUTF8)); |
- } // retranslateUi |
- |
-}; |
- |
-namespace Ui { |
- class MainWindow: public Ui_MainWindow {}; |
-} // namespace Ui |
- |
-QT_END_NAMESPACE |
- |
-#endif // UI_MAINWINDOW_H |
/trunk/Chapter 01/myQtGUIApp/ui_mainwindow.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/myQtGUIApp.pro |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/myQtGUIApp.pro (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/myQtGUIApp.pro (nonexistent) |
@@ -1,25 +0,0 @@ |
-#------------------------------------------------- |
-# |
-# Project created by QtCreator 2010-06-28T13:41:33 |
-# |
-#------------------------------------------------- |
- |
-TARGET = myQtGUIApp |
-TEMPLATE = app |
- |
- |
-SOURCES += main.cpp\ |
- mainwindow.cpp |
- |
-HEADERS += mainwindow.h |
- |
-FORMS += mainwindow.ui |
- |
-INCLUDEPATH += C:\OpenCV2.2\include\ |
- |
-LIBS += -LC:\OpenCV2.2\lib \ |
- -lopencv_core \ |
- -lopencv_highgui \ |
- -lopencv_imgproc \ |
- -lopencv_features2d \ |
- -lopencv_calib3d |
Index: trunk/Chapter 01/myQtGUIApp/myQtGUIApp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/Chapter 01/myQtGUIApp/myQtGUIApp |
Property changes: |
Deleted: svn:executable |
## -1 +0,0 ## |
-* |
\ No newline at end of property |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/mainwindow.h |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/mainwindow.h (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/mainwindow.h (nonexistent) |
@@ -1,50 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
- |
-#ifndef MAINWINDOW_H |
-#define MAINWINDOW_H |
- |
-#include <QtGui/QMainWindow> |
-#include <QFileDialog> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
- |
-namespace Ui |
-{ |
- class MainWindow; |
-} |
- |
-class MainWindow : public QMainWindow |
-{ |
- Q_OBJECT |
- |
-public: |
- MainWindow(QWidget *parent = 0); |
- ~MainWindow(); |
- |
-private: |
- Ui::MainWindow *ui; |
- cv::Mat image; // the image variable |
- |
-private slots: |
- void on_pushButton_2_clicked(); |
- void on_pushButton_clicked(); |
-}; |
- |
-#endif // MAINWINDOW_H |
/trunk/Chapter 01/myQtGUIApp/mainwindow.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/Makefile.Debug |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/Makefile.Debug (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/Makefile.Debug (nonexistent) |
@@ -1,176 +0,0 @@ |
-############################################################################# |
-# Makefile for building: myQtGUIApp |
-# Generated by qmake (2.01a) (Qt 4.6.3) on: Mon Feb 28 15:14:16 2011 |
-# Project: myQtGUIApp.pro |
-# Template: app |
-############################################################################# |
- |
-####### Compiler, tools and options |
- |
-CC = cl |
-CXX = cl |
-DEFINES = -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT |
-CFLAGS = -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -W3 $(DEFINES) |
-CXXFLAGS = -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 $(DEFINES) |
-INCPATH = -I"..\..\Qt\4.6.3\include\QtCore" -I"..\..\Qt\4.6.3\include\QtGui" -I"..\..\Qt\4.6.3\include" -I"..\..\OpenCV2.2\include" -I"..\..\Qt\4.6.3\include\ActiveQt" -I"debug" -I"." -I"..\..\Qt\4.6.3\mkspecs\win32-msvc2008" |
-LINK = link |
-LFLAGS = /LIBPATH:"c:\Qt\4.6.3\lib" /NOLOGO /DEBUG /MANIFEST /MANIFESTFILE:"debug\myQtGUIApp.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" |
-LIBS = c:\Qt\4.6.3\lib\qtmaind.lib /LIBPATH:C:\OpenCV2.2\lib C:\OpenCV2.2\lib\opencv_core220.lib C:\OpenCV2.2\lib\opencv_highgui220.lib C:\OpenCV2.2\lib\opencv_imgproc220.lib C:\OpenCV2.2\lib\opencv_features2d220.lib C:\OpenCV2.2\lib\opencv_calib3d220.lib c:\Qt\4.6.3\lib\QtGuid4.lib c:\Qt\4.6.3\lib\QtCored4.lib |
-QMAKE = c:\Qt\4.6.3\bin\qmake.exe |
-IDC = c:\Qt\4.6.3\bin\idc.exe |
-IDL = midl |
-ZIP = zip -r -9 |
-DEF_FILE = |
-RES_FILE = |
-COPY = copy /y |
-COPY_FILE = $(COPY) |
-COPY_DIR = xcopy /s /q /y /i |
-DEL_FILE = del |
-DEL_DIR = rmdir |
-MOVE = move |
-CHK_DIR_EXISTS= if not exist |
-MKDIR = mkdir |
-INSTALL_FILE = $(COPY_FILE) |
-INSTALL_PROGRAM = $(COPY_FILE) |
-INSTALL_DIR = $(COPY_DIR) |
- |
-####### Output directory |
- |
-OBJECTS_DIR = debug |
- |
-####### Files |
- |
-SOURCES = main.cpp \ |
- mainwindow.cpp debug\moc_mainwindow.cpp |
-OBJECTS = debug\main.obj \ |
- debug\mainwindow.obj \ |
- debug\moc_mainwindow.obj |
-DIST = |
-QMAKE_TARGET = myQtGUIApp |
-DESTDIR = debug\ #avoid trailing-slash linebreak |
-TARGET = myQtGUIApp.exe |
-DESTDIR_TARGET = debug\myQtGUIApp.exe |
- |
-####### Implicit rules |
- |
-.SUFFIXES: .c .cpp .cc .cxx |
- |
-{.}.cpp{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{.}.cc{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{.}.cxx{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{.}.c{debug\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.cpp{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.cc{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.cxx{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.c{debug\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-####### Build rules |
- |
-first: all |
-all: Makefile.Debug $(DESTDIR_TARGET) |
- |
-$(DESTDIR_TARGET): ui_mainwindow.h $(OBJECTS) |
- $(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<< |
- $(OBJECTS) $(LIBS) |
-<< |
- mt.exe -nologo -manifest "debug\myQtGUIApp.intermediate.manifest" -outputresource:$(DESTDIR_TARGET);1 |
- |
- |
- |
-qmake: FORCE |
- @$(QMAKE) -spec ..\..\Qt\4.6.3\mkspecs\win32-msvc2008 -win32 CONFIG+=release -o Makefile.Debug myQtGUIApp.pro |
- |
-dist: |
- $(ZIP) myQtGUIApp.zip $(SOURCES) $(DIST) myQtGUIApp.pro ..\..\Qt\4.6.3\mkspecs\qconfig.pri ..\..\Qt\4.6.3\mkspecs\features\qt_functions.prf ..\..\Qt\4.6.3\mkspecs\features\qt_config.prf ..\..\Qt\4.6.3\mkspecs\features\exclusive_builds.prf ..\..\Qt\4.6.3\mkspecs\features\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\debug.prf ..\..\Qt\4.6.3\mkspecs\features\debug_and_release.prf ..\..\Qt\4.6.3\mkspecs\features\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\build_pass.prf ..\..\Qt\4.6.3\mkspecs\features\win32\rtti.prf ..\..\Qt\4.6.3\mkspecs\features\win32\exceptions.prf ..\..\Qt\4.6.3\mkspecs\features\win32\stl.prf ..\..\Qt\4.6.3\mkspecs\features\shared.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_exe.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_dll.prf ..\..\Qt\4.6.3\mkspecs\features\warn_on.prf ..\..\Qt\4.6.3\mkspecs\features\qt.prf ..\..\Qt\4.6.3\mkspecs\features\win32\thread.prf ..\..\Qt\4.6.3\mkspecs\features\moc.prf ..\..\Qt\4.6.3\mkspecs\features\win32\windows.prf ..\..\Qt\4.6.3\mkspecs\features\resources.prf ..\..\Qt\4.6.3\mkspecs\features\uic.prf ..\..\Qt\4.6.3\mkspecs\features\yacc.prf ..\..\Qt\4.6.3\mkspecs\features\lex.prf ..\..\Qt\4.6.3\mkspecs\features\incredibuild_xge.prf ..\..\Qt\4.6.3\mkspecs\features\include_source_dir.prf c:\Qt\4.6.3\lib\qtmaind.prl HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES |
- |
-clean: compiler_clean |
- -$(DEL_FILE) debug\main.obj debug\mainwindow.obj debug\moc_mainwindow.obj |
- -$(DEL_FILE) debug\myQtGUIApp.intermediate.manifest debug\myQtGUIApp.exp debug\myQtGUIApp.pdb debug\myQtGUIApp.ilk vc*.pdb vc*.idb |
- |
-distclean: clean |
- -$(DEL_FILE) $(DESTDIR_TARGET) |
- -$(DEL_FILE) Makefile.Debug |
- |
-check: first |
- |
-mocclean: compiler_moc_header_clean compiler_moc_source_clean |
- |
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all |
- |
-compiler_moc_header_make_all: debug\moc_mainwindow.cpp |
-compiler_moc_header_clean: |
- -$(DEL_FILE) debug\moc_mainwindow.cpp |
-debug\moc_mainwindow.cpp: mainwindow.h |
- C:\Qt\4.6.3\bin\moc.exe $(DEFINES) $(INCPATH) -D_MSC_VER=1500 -DWIN32 mainwindow.h -o debug\moc_mainwindow.cpp |
- |
-compiler_rcc_make_all: |
-compiler_rcc_clean: |
-compiler_image_collection_make_all: qmake_image_collection.cpp |
-compiler_image_collection_clean: |
- -$(DEL_FILE) qmake_image_collection.cpp |
-compiler_moc_source_make_all: |
-compiler_moc_source_clean: |
-compiler_uic_make_all: ui_mainwindow.h |
-compiler_uic_clean: |
- -$(DEL_FILE) ui_mainwindow.h |
-ui_mainwindow.h: mainwindow.ui |
- c:\Qt\4.6.3\bin\uic.exe mainwindow.ui -o ui_mainwindow.h |
- |
-compiler_yacc_decl_make_all: |
-compiler_yacc_decl_clean: |
-compiler_yacc_impl_make_all: |
-compiler_yacc_impl_clean: |
-compiler_lex_make_all: |
-compiler_lex_clean: |
-compiler_clean: compiler_moc_header_clean compiler_uic_clean |
- |
- |
- |
-####### Compile |
- |
-debug\main.obj: main.cpp mainwindow.h |
- |
-debug\mainwindow.obj: mainwindow.cpp mainwindow.h \ |
- ui_mainwindow.h |
- |
-debug\moc_mainwindow.obj: debug\moc_mainwindow.cpp |
- |
-####### Install |
- |
-install: FORCE |
- |
-uninstall: FORCE |
- |
-FORCE: |
- |
Index: trunk/Chapter 01/myQtGUIApp/.project |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/.project (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/.project (nonexistent) |
@@ -1,27 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8"?> |
-<projectDescription> |
- <name>OpenCV2-Cookbook-Chapter-01-Qt1</name> |
- <comment></comment> |
- <projects> |
- </projects> |
- <buildSpec> |
- <buildCommand> |
- <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> |
- <triggers>clean,full,incremental,</triggers> |
- <arguments> |
- </arguments> |
- </buildCommand> |
- <buildCommand> |
- <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> |
- <triggers>full,incremental,</triggers> |
- <arguments> |
- </arguments> |
- </buildCommand> |
- </buildSpec> |
- <natures> |
- <nature>org.eclipse.cdt.core.cnature</nature> |
- <nature>org.eclipse.cdt.core.ccnature</nature> |
- <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> |
- <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> |
- </natures> |
-</projectDescription> |
/trunk/Chapter 01/myQtGUIApp/.project |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtGUIApp/main.cpp |
=================================================================== |
--- trunk/Chapter 01/myQtGUIApp/main.cpp (revision 9) |
+++ trunk/Chapter 01/myQtGUIApp/main.cpp (nonexistent) |
@@ -1,27 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <QtGui/QApplication> |
-#include "mainwindow.h" |
- |
-int main(int argc, char *argv[]) |
-{ |
- QApplication a(argc, argv); |
- MainWindow w; |
- w.show(); |
- return a.exec(); |
-} |
/trunk/Chapter 01/myQtGUIApp/main.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/myQtConsoleProject.pro |
=================================================================== |
--- trunk/Chapter 01/myQtConsoleProject.pro (revision 9) |
+++ trunk/Chapter 01/myQtConsoleProject.pro (nonexistent) |
@@ -1,25 +0,0 @@ |
-#------------------------------------------------- |
-# |
-# Project created by QtCreator |
-# |
-#------------------------------------------------- |
- |
-QT -= gui |
- |
-TARGET = myQtConsoleProject |
-CONFIG += console |
-CONFIG -= app_bundle |
- |
-TEMPLATE = app |
- |
- |
-SOURCES += main.cpp |
- |
-INCLUDEPATH += C:\OpenCV2.2\include\ |
- |
-LIBS += -LC:\OpenCV2.2\lib \ |
- -lopencv_core220 \ |
- -lopencv_highgui220 \ |
- -lopencv_imgproc220 \ |
- -lopencv_features2d220 \ |
- -lopencv_calib3d220 |
Index: trunk/Chapter 01/main1.cpp |
=================================================================== |
--- trunk/Chapter 01/main1.cpp (revision 9) |
+++ trunk/Chapter 01/main1.cpp (nonexistent) |
@@ -1,33 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-int main() { |
- |
- // read an image |
- cv::Mat image= cv::imread("baboon1.jpg"); |
- // create image window named "My Image" |
- cv::namedWindow("My Image"); |
- // show the image on window |
- cv::imshow("My Image", image); |
- // wait key for 5000 ms |
- cv::waitKey(5000); |
- |
- return 1; |
-} |
/trunk/Chapter 01/main1.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/main2.cpp |
=================================================================== |
--- trunk/Chapter 01/main2.cpp (revision 9) |
+++ trunk/Chapter 01/main2.cpp (nonexistent) |
@@ -1,92 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-// function that creates and returns an image |
-cv::Mat function() { |
- |
- // create image |
- cv::Mat ima(240,320,CV_8U,cv::Scalar(100)); |
- // return it |
- return ima; |
-} |
- |
-int main() { |
- |
- // create image |
- cv::Mat image; |
- // print image size |
- std::cout << "size: " << image.size().height << " , " |
- << image.size().width << std::endl; |
- // open image |
- image= cv::imread("baboon1.jpg"); |
- // check if image has been successfully read |
- if (!image.data) { |
- // no image has been created� |
- return 0; |
- } |
- // print image size |
- std::cout << "size (after reading): " << image.size().height << " , " |
- << image.size().width << std::endl; |
- |
- // display image |
- cv::namedWindow("Original Image"); // define the window |
- cv::imshow("Original Image", image); // show the image |
- |
- // create another image |
- cv::Mat result; |
- // flip the image |
- cv::flip(image,result,1); // positive for horizontal |
- // 0 for vertical, |
- // negative for both |
- // display result |
- cv::namedWindow("Output Image"); |
- cv::imshow("Output Image", result); |
- // wait for key pressed |
- cv::waitKey(0); |
- // write image on file |
- cv::imwrite("output.bmp", result); |
- |
- // create two new images |
- cv::Mat image2, image3; |
- |
- image2= result; // the two images refer to the same data |
- result.copyTo(image3); // a new copy is created |
- |
- // flip vertically this time |
- cv::flip(result,result,0); |
- |
- // display result |
- cv::namedWindow("image 2"); |
- cv::imshow("image 2", image2); |
- cv::namedWindow("image 3"); |
- cv::imshow("image 3", image3); |
- |
- // get a gray-level image |
- cv::Mat gray= function(); |
- // display result |
- cv::namedWindow("Gray Image"); |
- cv::imshow("Gray Image", gray); |
- |
- // wait for key pressed |
- cv::waitKey(0); |
- return 1; |
-} |
- |
/trunk/Chapter 01/main2.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/main.cpp |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/main.cpp (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/main.cpp (nonexistent) |
@@ -1,27 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <qt4/QtGui/QApplication> |
-#include "mainwindow.h" |
- |
-int main(int argc, char *argv[]) |
-{ |
- QApplication a(argc, argv); |
- MainWindow w; |
- w.show(); |
- return a.exec(); |
-} |
/trunk/Chapter 01/anotherQtGUI/main.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/.cproject |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/.cproject (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/.cproject (nonexistent) |
@@ -1,123 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> |
- <storageModule moduleId="org.eclipse.cdt.core.settings"> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1954385489"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1954385489" moduleId="org.eclipse.cdt.core.settings" name="Debug"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1954385489" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1954385489." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.255603280" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.600622311" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/> |
- <builder buildPath="${workspace_loc:/OpenCV2-Qt2}" id="cdt.managedbuild.target.gnu.builder.exe.debug.1910936846" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.349558976" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.154799066" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"> |
- <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.720782557" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.1338924299" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.906567569" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1315296774" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"> |
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1180682138" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.debug.option.debugging.level.1100856140" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.478043739" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1368375246" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1040669836" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.111346820" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.147919171" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1882956154" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.release.799042925"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.799042925" moduleId="org.eclipse.cdt.core.settings" name="Release"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.799042925" name="Release" parent="cdt.managedbuild.config.gnu.exe.release"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.release.799042925." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.1431401863" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.322082323" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/> |
- <builder buildPath="${workspace_loc:/OpwnCV2-Qt2}/Release" id="cdt.managedbuild.target.gnu.builder.exe.release.917150799" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.1850346552" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.99680848" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release"> |
- <option id="gnu.cpp.compiler.exe.release.option.optimization.level.1040799196" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.release.option.debugging.level.237152236" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.444961364" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.2042789232" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release"> |
- <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.254680918" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.release.option.debugging.level.2091057146" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1362483875" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.382079077" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.405300993" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release"> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1788453620" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.581667243" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1768154328" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <project id="OpwnCV2-Qt2.cdt.managedbuild.target.gnu.exe.184892913" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/> |
- </storageModule> |
- <storageModule moduleId="scannerConfiguration"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1954385489;cdt.managedbuild.config.gnu.exe.debug.1954385489.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1315296774;cdt.managedbuild.tool.gnu.c.compiler.input.478043739"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1954385489;cdt.managedbuild.config.gnu.exe.debug.1954385489.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.154799066;cdt.managedbuild.tool.gnu.cpp.compiler.input.906567569"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.799042925;cdt.managedbuild.config.gnu.exe.release.799042925.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.99680848;cdt.managedbuild.tool.gnu.cpp.compiler.input.444961364"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.799042925;cdt.managedbuild.config.gnu.exe.release.799042925.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.2042789232;cdt.managedbuild.tool.gnu.c.compiler.input.1362483875"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> |
- <storageModule moduleId="refreshScope" versionNumber="2"> |
- <configuration configurationName="Release"> |
- <resource resourceType="PROJECT" workspacePath="/OpwnCV2-Qt2"/> |
- </configuration> |
- <configuration configurationName="Debug"> |
- <resource resourceType="PROJECT" workspacePath="/OpwnCV2-Qt2"/> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> |
-</cproject> |
/trunk/Chapter 01/anotherQtGUI/.cproject |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/mainwindow.ui |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/mainwindow.ui (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/mainwindow.ui (nonexistent) |
@@ -1,80 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8"?> |
-<ui version="4.0"> |
- <class>MainWindow</class> |
- <widget class="QMainWindow" name="MainWindow"> |
- <property name="geometry"> |
- <rect> |
- <x>0</x> |
- <y>0</y> |
- <width>572</width> |
- <height>326</height> |
- </rect> |
- </property> |
- <property name="windowTitle"> |
- <string>MainWindow</string> |
- </property> |
- <widget class="QWidget" name="centralWidget"> |
- <widget class="QPushButton" name="pushButton"> |
- <property name="geometry"> |
- <rect> |
- <x>10</x> |
- <y>10</y> |
- <width>111</width> |
- <height>51</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Open Image</string> |
- </property> |
- </widget> |
- <widget class="QPushButton" name="pushButton_2"> |
- <property name="geometry"> |
- <rect> |
- <x>10</x> |
- <y>70</y> |
- <width>111</width> |
- <height>51</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Process</string> |
- </property> |
- </widget> |
- <widget class="QLabel" name="label"> |
- <property name="geometry"> |
- <rect> |
- <x>160</x> |
- <y>10</y> |
- <width>391</width> |
- <height>261</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Image</string> |
- </property> |
- </widget> |
- </widget> |
- <widget class="QMenuBar" name="menuBar"> |
- <property name="geometry"> |
- <rect> |
- <x>0</x> |
- <y>0</y> |
- <width>572</width> |
- <height>25</height> |
- </rect> |
- </property> |
- </widget> |
- <widget class="QToolBar" name="mainToolBar"> |
- <attribute name="toolBarArea"> |
- <enum>TopToolBarArea</enum> |
- </attribute> |
- <attribute name="toolBarBreak"> |
- <bool>false</bool> |
- </attribute> |
- </widget> |
- <widget class="QStatusBar" name="statusBar"/> |
- </widget> |
- <layoutdefault spacing="6" margin="11"/> |
- <resources/> |
- <connections/> |
-</ui> |
Index: trunk/Chapter 01/anotherQtGUI/anotherQtGUI.pro |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/anotherQtGUI.pro (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/anotherQtGUI.pro (nonexistent) |
@@ -1,25 +0,0 @@ |
-#------------------------------------------------- |
-# |
-# Project created by QtCreator 2010-06-30T08:18:42 |
-# |
-#------------------------------------------------- |
- |
-TARGET = anotherQtGUI |
-TEMPLATE = app |
- |
- |
-SOURCES += main.cpp\ |
- mainwindow.cpp |
- |
-HEADERS += mainwindow.h |
- |
-FORMS += mainwindow.ui |
- |
-INCLUDEPATH += C:\OpenCV2.2\include\ |
- |
-LIBS += -LC:\OpenCV2.2\lib \ |
- -lopencv_core \ |
- -lopencv_highgui \ |
- -lopencv_imgproc \ |
- -lopencv_features2d \ |
- -lopencv_calib3d |
Index: trunk/Chapter 01/anotherQtGUI/anotherQtGUI |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/Chapter 01/anotherQtGUI/anotherQtGUI |
Property changes: |
Deleted: svn:executable |
## -1 +0,0 ## |
-* |
\ No newline at end of property |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/moc_mainwindow.cpp |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/moc_mainwindow.cpp (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/moc_mainwindow.cpp (nonexistent) |
@@ -1,96 +0,0 @@ |
-/**************************************************************************** |
-** Meta object code from reading C++ file 'mainwindow.h' |
-** |
-** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6) |
-** |
-** WARNING! All changes made in this file will be lost! |
-*****************************************************************************/ |
- |
-#include "mainwindow.h" |
-#if !defined(Q_MOC_OUTPUT_REVISION) |
-#error "The header file 'mainwindow.h' doesn't include <QObject>." |
-#elif Q_MOC_OUTPUT_REVISION != 63 |
-#error "This file was generated using the moc from 4.8.6. It" |
-#error "cannot be used with the include files from this version of Qt." |
-#error "(The moc has changed too much.)" |
-#endif |
- |
-QT_BEGIN_MOC_NAMESPACE |
-static const uint qt_meta_data_MainWindow[] = { |
- |
- // content: |
- 6, // revision |
- 0, // classname |
- 0, 0, // classinfo |
- 2, 14, // methods |
- 0, 0, // properties |
- 0, 0, // enums/sets |
- 0, 0, // constructors |
- 0, // flags |
- 0, // signalCount |
- |
- // slots: signature, parameters, type, tag, flags |
- 12, 11, 11, 11, 0x08, |
- 38, 11, 11, 11, 0x08, |
- |
- 0 // eod |
-}; |
- |
-static const char qt_meta_stringdata_MainWindow[] = { |
- "MainWindow\0\0on_pushButton_2_clicked()\0" |
- "on_pushButton_clicked()\0" |
-}; |
- |
-void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) |
-{ |
- if (_c == QMetaObject::InvokeMetaMethod) { |
- Q_ASSERT(staticMetaObject.cast(_o)); |
- MainWindow *_t = static_cast<MainWindow *>(_o); |
- switch (_id) { |
- case 0: _t->on_pushButton_2_clicked(); break; |
- case 1: _t->on_pushButton_clicked(); break; |
- default: ; |
- } |
- } |
- Q_UNUSED(_a); |
-} |
- |
-const QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = { |
- 0, qt_static_metacall |
-}; |
- |
-const QMetaObject MainWindow::staticMetaObject = { |
- { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow, |
- qt_meta_data_MainWindow, &staticMetaObjectExtraData } |
-}; |
- |
-#ifdef Q_NO_DATA_RELOCATION |
-const QMetaObject &MainWindow::getStaticMetaObject() { return staticMetaObject; } |
-#endif //Q_NO_DATA_RELOCATION |
- |
-const QMetaObject *MainWindow::metaObject() const |
-{ |
- return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; |
-} |
- |
-void *MainWindow::qt_metacast(const char *_clname) |
-{ |
- if (!_clname) return 0; |
- if (!strcmp(_clname, qt_meta_stringdata_MainWindow)) |
- return static_cast<void*>(const_cast< MainWindow*>(this)); |
- return QMainWindow::qt_metacast(_clname); |
-} |
- |
-int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) |
-{ |
- _id = QMainWindow::qt_metacall(_c, _id, _a); |
- if (_id < 0) |
- return _id; |
- if (_c == QMetaObject::InvokeMetaMethod) { |
- if (_id < 2) |
- qt_static_metacall(this, _c, _id, _a); |
- _id -= 2; |
- } |
- return _id; |
-} |
-QT_END_MOC_NAMESPACE |
/trunk/Chapter 01/anotherQtGUI/moc_mainwindow.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/Makefile.Release |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/Makefile.Release (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/Makefile.Release (nonexistent) |
@@ -1,176 +0,0 @@ |
-############################################################################# |
-# Makefile for building: anotherQtGUI |
-# Generated by qmake (2.01a) (Qt 4.6.3) on: Thu Aug 5 11:10:44 2010 |
-# Project: anotherQtGUI.pro |
-# Template: app |
-############################################################################# |
- |
-####### Compiler, tools and options |
- |
-CC = cl |
-CXX = cl |
-DEFINES = -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT |
-CFLAGS = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -W3 $(DEFINES) |
-CXXFLAGS = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -GR -EHsc -W3 -w34100 -w34189 $(DEFINES) |
-INCPATH = -I"..\..\Qt\4.6.3\include\QtCore" -I"..\..\Qt\4.6.3\include\QtGui" -I"..\..\Qt\4.6.3\include" -I"..\..\OpenCV2.1\include\opencv" -I"..\..\Qt\4.6.3\include\ActiveQt" -I"release" -I"." -I"..\..\Qt\4.6.3\mkspecs\win32-msvc2008" |
-LINK = link |
-LFLAGS = /LIBPATH:"c:\Qt\4.6.3\lib" /NOLOGO /INCREMENTAL:NO /MANIFEST /MANIFESTFILE:"release\anotherQtGUI.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" |
-LIBS = c:\Qt\4.6.3\lib\qtmain.lib /LIBPATH:C:\OpenCV2.1\lib C:\OpenCV2.1\lib\cv210.lib C:\OpenCV2.1\lib\cxcore210.lib C:\OpenCV2.1\lib\highgui210.lib c:\Qt\4.6.3\lib\QtGui4.lib c:\Qt\4.6.3\lib\QtCore4.lib |
-QMAKE = c:\Qt\4.6.3\bin\qmake.exe |
-IDC = c:\Qt\4.6.3\bin\idc.exe |
-IDL = midl |
-ZIP = zip -r -9 |
-DEF_FILE = |
-RES_FILE = |
-COPY = copy /y |
-COPY_FILE = $(COPY) |
-COPY_DIR = xcopy /s /q /y /i |
-DEL_FILE = del |
-DEL_DIR = rmdir |
-MOVE = move |
-CHK_DIR_EXISTS= if not exist |
-MKDIR = mkdir |
-INSTALL_FILE = $(COPY_FILE) |
-INSTALL_PROGRAM = $(COPY_FILE) |
-INSTALL_DIR = $(COPY_DIR) |
- |
-####### Output directory |
- |
-OBJECTS_DIR = release |
- |
-####### Files |
- |
-SOURCES = main.cpp \ |
- mainwindow.cpp release\moc_mainwindow.cpp |
-OBJECTS = release\main.obj \ |
- release\mainwindow.obj \ |
- release\moc_mainwindow.obj |
-DIST = |
-QMAKE_TARGET = anotherQtGUI |
-DESTDIR = release\ #avoid trailing-slash linebreak |
-TARGET = anotherQtGUI.exe |
-DESTDIR_TARGET = release\anotherQtGUI.exe |
- |
-####### Implicit rules |
- |
-.SUFFIXES: .c .cpp .cc .cxx |
- |
-{release}.cpp{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{release}.cc{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{release}.cxx{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{release}.c{release\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.cpp{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.cc{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.cxx{release\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-{.}.c{release\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Forelease\ @<< |
- $< |
-<< |
- |
-####### Build rules |
- |
-first: all |
-all: Makefile.Release $(DESTDIR_TARGET) |
- |
-$(DESTDIR_TARGET): ui_mainwindow.h $(OBJECTS) |
- $(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<< |
- $(OBJECTS) $(LIBS) |
-<< |
- mt.exe -nologo -manifest "release\anotherQtGUI.intermediate.manifest" -outputresource:$(DESTDIR_TARGET);1 |
- |
- |
- |
-qmake: FORCE |
- @$(QMAKE) -spec ..\..\Qt\4.6.3\mkspecs\win32-msvc2008 -win32 CONFIG+=release -o Makefile.Release anotherQtGUI.pro |
- |
-dist: |
- $(ZIP) anotherQtGUI.zip $(SOURCES) $(DIST) anotherQtGUI.pro ..\..\Qt\4.6.3\mkspecs\qconfig.pri ..\..\Qt\4.6.3\mkspecs\features\qt_functions.prf ..\..\Qt\4.6.3\mkspecs\features\qt_config.prf ..\..\Qt\4.6.3\mkspecs\features\exclusive_builds.prf ..\..\Qt\4.6.3\mkspecs\features\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\release.prf ..\..\Qt\4.6.3\mkspecs\features\debug_and_release.prf ..\..\Qt\4.6.3\mkspecs\features\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\build_pass.prf ..\..\Qt\4.6.3\mkspecs\features\win32\rtti.prf ..\..\Qt\4.6.3\mkspecs\features\win32\exceptions.prf ..\..\Qt\4.6.3\mkspecs\features\win32\stl.prf ..\..\Qt\4.6.3\mkspecs\features\shared.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_exe.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_dll.prf ..\..\Qt\4.6.3\mkspecs\features\warn_on.prf ..\..\Qt\4.6.3\mkspecs\features\qt.prf ..\..\Qt\4.6.3\mkspecs\features\win32\thread.prf ..\..\Qt\4.6.3\mkspecs\features\moc.prf ..\..\Qt\4.6.3\mkspecs\features\win32\windows.prf ..\..\Qt\4.6.3\mkspecs\features\resources.prf ..\..\Qt\4.6.3\mkspecs\features\uic.prf ..\..\Qt\4.6.3\mkspecs\features\yacc.prf ..\..\Qt\4.6.3\mkspecs\features\lex.prf ..\..\Qt\4.6.3\mkspecs\features\incredibuild_xge.prf ..\..\Qt\4.6.3\mkspecs\features\include_source_dir.prf c:\Qt\4.6.3\lib\qtmain.prl HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES |
- |
-clean: compiler_clean |
- -$(DEL_FILE) release\main.obj release\mainwindow.obj release\moc_mainwindow.obj |
- -$(DEL_FILE) release\anotherQtGUI.intermediate.manifest release\anotherQtGUI.exp |
- |
-distclean: clean |
- -$(DEL_FILE) $(DESTDIR_TARGET) |
- -$(DEL_FILE) Makefile.Release |
- |
-check: first |
- |
-mocclean: compiler_moc_header_clean compiler_moc_source_clean |
- |
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all |
- |
-compiler_moc_header_make_all: release\moc_mainwindow.cpp |
-compiler_moc_header_clean: |
- -$(DEL_FILE) release\moc_mainwindow.cpp |
-release\moc_mainwindow.cpp: mainwindow.h |
- C:\Qt\4.6.3\bin\moc.exe $(DEFINES) $(INCPATH) -D_MSC_VER=1500 -DWIN32 mainwindow.h -o release\moc_mainwindow.cpp |
- |
-compiler_rcc_make_all: |
-compiler_rcc_clean: |
-compiler_image_collection_make_all: qmake_image_collection.cpp |
-compiler_image_collection_clean: |
- -$(DEL_FILE) qmake_image_collection.cpp |
-compiler_moc_source_make_all: |
-compiler_moc_source_clean: |
-compiler_uic_make_all: ui_mainwindow.h |
-compiler_uic_clean: |
- -$(DEL_FILE) ui_mainwindow.h |
-ui_mainwindow.h: mainwindow.ui |
- c:\Qt\4.6.3\bin\uic.exe mainwindow.ui -o ui_mainwindow.h |
- |
-compiler_yacc_decl_make_all: |
-compiler_yacc_decl_clean: |
-compiler_yacc_impl_make_all: |
-compiler_yacc_impl_clean: |
-compiler_lex_make_all: |
-compiler_lex_clean: |
-compiler_clean: compiler_moc_header_clean compiler_uic_clean |
- |
- |
- |
-####### Compile |
- |
-release\main.obj: main.cpp mainwindow.h |
- |
-release\mainwindow.obj: mainwindow.cpp mainwindow.h \ |
- ui_mainwindow.h |
- |
-release\moc_mainwindow.obj: release\moc_mainwindow.cpp |
- |
-####### Install |
- |
-install: FORCE |
- |
-uninstall: FORCE |
- |
-FORCE: |
- |
Index: trunk/Chapter 01/anotherQtGUI/mainwindow.cpp |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/mainwindow.cpp (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/mainwindow.cpp (nonexistent) |
@@ -1,55 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
-#include "mainwindow.h" |
-#include "ui_mainwindow.h" |
- |
-MainWindow::MainWindow(QWidget *parent) |
- : QMainWindow(parent), ui(new Ui::MainWindow) |
-{ |
- ui->setupUi(this); |
- ui->pushButton_2->setEnabled(false); |
-} |
- |
-MainWindow::~MainWindow() |
-{ |
- delete ui; |
-} |
- |
-void MainWindow::on_pushButton_clicked() |
-{ |
- QString fileName = QFileDialog::getOpenFileName(this, |
- tr("Open Image"), ".", tr("Image Files (*.png *.jpg *.bmp)")); |
- |
- image= cv::imread(fileName.toAscii().data()); |
- |
- if (image.data) { |
- cv::namedWindow("Original Image"); |
- cv::imshow("Original Image", image); |
- ui->pushButton_2->setEnabled(true); |
- } |
-} |
- |
-void MainWindow::on_pushButton_2_clicked() |
-{ |
- cv::flip(image,image,1); // process the image |
- |
- cv::cvtColor(image,image,CV_BGR2RGB); // change color channel ordering |
- QImage img= QImage((const unsigned char*)(image.data), // Qt image structure |
- image.cols,image.rows,QImage::Format_RGB888); |
- ui->label->setPixmap(QPixmap::fromImage(img)); // display on label |
- ui->label->resize(ui->label->pixmap()->size()); // resize the label to fit the image |
-} |
/trunk/Chapter 01/anotherQtGUI/mainwindow.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/Makefile |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/Makefile (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/Makefile (nonexistent) |
@@ -1,235 +0,0 @@ |
-############################################################################# |
-# Makefile for building: anotherQtGUI |
-# Generated by qmake (2.01a) (Qt 4.8.6) on: Sa. Jan 25 06:37:10 2014 |
-# Project: anotherQtGUI.pro |
-# Template: app |
-# Command: /usr/lib/i386-linux-gnu/qt4/bin/qmake -o Makefile anotherQtGUI.pro |
-############################################################################# |
- |
-####### Compiler, tools and options |
- |
-CC = gcc |
-CXX = g++ |
-DEFINES = -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED |
-CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) |
-CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) |
-INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -IC:\OpenCV2.2\include -I. -I. |
-LINK = g++ |
-LFLAGS = -Wl,-O1 |
-LIBS = $(SUBLIBS) -L/usr/lib/i386-linux-gnu -LC:\OpenCV2.2\lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_features2d -lopencv_calib3d -lQtGui -lQtCore -lpthread |
-AR = ar cqs |
-RANLIB = |
-QMAKE = /usr/lib/i386-linux-gnu/qt4/bin/qmake |
-TAR = tar -cf |
-COMPRESS = gzip -9f |
-COPY = cp -f |
-SED = sed |
-COPY_FILE = $(COPY) |
-COPY_DIR = $(COPY) -r |
-STRIP = strip |
-INSTALL_FILE = install -m 644 -p |
-INSTALL_DIR = $(COPY_DIR) |
-INSTALL_PROGRAM = install -m 755 -p |
-DEL_FILE = rm -f |
-SYMLINK = ln -f -s |
-DEL_DIR = rmdir |
-MOVE = mv -f |
-CHK_DIR_EXISTS= test -d |
-MKDIR = mkdir -p |
- |
-####### Output directory |
- |
-OBJECTS_DIR = ./ |
- |
-####### Files |
- |
-SOURCES = main.cpp \ |
- mainwindow.cpp moc_mainwindow.cpp |
-OBJECTS = main.o \ |
- mainwindow.o \ |
- moc_mainwindow.o |
-DIST = /usr/share/qt4/mkspecs/common/unix.conf \ |
- /usr/share/qt4/mkspecs/common/linux.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base-unix.conf \ |
- /usr/share/qt4/mkspecs/common/g++-base.conf \ |
- /usr/share/qt4/mkspecs/common/g++-unix.conf \ |
- /usr/share/qt4/mkspecs/qconfig.pri \ |
- /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ |
- /usr/share/qt4/mkspecs/features/qt_functions.prf \ |
- /usr/share/qt4/mkspecs/features/qt_config.prf \ |
- /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ |
- /usr/share/qt4/mkspecs/features/default_pre.prf \ |
- /usr/share/qt4/mkspecs/features/release.prf \ |
- /usr/share/qt4/mkspecs/features/default_post.prf \ |
- /usr/share/qt4/mkspecs/features/shared.prf \ |
- /usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \ |
- /usr/share/qt4/mkspecs/features/warn_on.prf \ |
- /usr/share/qt4/mkspecs/features/qt.prf \ |
- /usr/share/qt4/mkspecs/features/unix/thread.prf \ |
- /usr/share/qt4/mkspecs/features/moc.prf \ |
- /usr/share/qt4/mkspecs/features/resources.prf \ |
- /usr/share/qt4/mkspecs/features/uic.prf \ |
- /usr/share/qt4/mkspecs/features/yacc.prf \ |
- /usr/share/qt4/mkspecs/features/lex.prf \ |
- /usr/share/qt4/mkspecs/features/include_source_dir.prf \ |
- anotherQtGUI.pro |
-QMAKE_TARGET = anotherQtGUI |
-DESTDIR = |
-TARGET = anotherQtGUI |
- |
-first: all |
-####### Implicit rules |
- |
-.SUFFIXES: .o .c .cpp .cc .cxx .C |
- |
-.cpp.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.cc.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.cxx.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.C.o: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-.c.o: |
- $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" |
- |
-####### Build rules |
- |
-all: Makefile $(TARGET) |
- |
-$(TARGET): ui_mainwindow.h $(OBJECTS) |
- $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) |
- |
-Makefile: anotherQtGUI.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/unix.conf \ |
- /usr/share/qt4/mkspecs/common/linux.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base.conf \ |
- /usr/share/qt4/mkspecs/common/gcc-base-unix.conf \ |
- /usr/share/qt4/mkspecs/common/g++-base.conf \ |
- /usr/share/qt4/mkspecs/common/g++-unix.conf \ |
- /usr/share/qt4/mkspecs/qconfig.pri \ |
- /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ |
- /usr/share/qt4/mkspecs/features/qt_functions.prf \ |
- /usr/share/qt4/mkspecs/features/qt_config.prf \ |
- /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ |
- /usr/share/qt4/mkspecs/features/default_pre.prf \ |
- /usr/share/qt4/mkspecs/features/release.prf \ |
- /usr/share/qt4/mkspecs/features/default_post.prf \ |
- /usr/share/qt4/mkspecs/features/shared.prf \ |
- /usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \ |
- /usr/share/qt4/mkspecs/features/warn_on.prf \ |
- /usr/share/qt4/mkspecs/features/qt.prf \ |
- /usr/share/qt4/mkspecs/features/unix/thread.prf \ |
- /usr/share/qt4/mkspecs/features/moc.prf \ |
- /usr/share/qt4/mkspecs/features/resources.prf \ |
- /usr/share/qt4/mkspecs/features/uic.prf \ |
- /usr/share/qt4/mkspecs/features/yacc.prf \ |
- /usr/share/qt4/mkspecs/features/lex.prf \ |
- /usr/share/qt4/mkspecs/features/include_source_dir.prf \ |
- /usr/lib/i386-linux-gnu/libQtGui.prl \ |
- /usr/lib/i386-linux-gnu/libQtCore.prl |
- $(QMAKE) -o Makefile anotherQtGUI.pro |
-/usr/share/qt4/mkspecs/common/unix.conf: |
-/usr/share/qt4/mkspecs/common/linux.conf: |
-/usr/share/qt4/mkspecs/common/gcc-base.conf: |
-/usr/share/qt4/mkspecs/common/gcc-base-unix.conf: |
-/usr/share/qt4/mkspecs/common/g++-base.conf: |
-/usr/share/qt4/mkspecs/common/g++-unix.conf: |
-/usr/share/qt4/mkspecs/qconfig.pri: |
-/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri: |
-/usr/share/qt4/mkspecs/features/qt_functions.prf: |
-/usr/share/qt4/mkspecs/features/qt_config.prf: |
-/usr/share/qt4/mkspecs/features/exclusive_builds.prf: |
-/usr/share/qt4/mkspecs/features/default_pre.prf: |
-/usr/share/qt4/mkspecs/features/release.prf: |
-/usr/share/qt4/mkspecs/features/default_post.prf: |
-/usr/share/qt4/mkspecs/features/shared.prf: |
-/usr/share/qt4/mkspecs/features/unix/gdb_dwarf_index.prf: |
-/usr/share/qt4/mkspecs/features/warn_on.prf: |
-/usr/share/qt4/mkspecs/features/qt.prf: |
-/usr/share/qt4/mkspecs/features/unix/thread.prf: |
-/usr/share/qt4/mkspecs/features/moc.prf: |
-/usr/share/qt4/mkspecs/features/resources.prf: |
-/usr/share/qt4/mkspecs/features/uic.prf: |
-/usr/share/qt4/mkspecs/features/yacc.prf: |
-/usr/share/qt4/mkspecs/features/lex.prf: |
-/usr/share/qt4/mkspecs/features/include_source_dir.prf: |
-/usr/lib/i386-linux-gnu/libQtGui.prl: |
-/usr/lib/i386-linux-gnu/libQtCore.prl: |
-qmake: FORCE |
- @$(QMAKE) -o Makefile anotherQtGUI.pro |
- |
-dist: |
- @$(CHK_DIR_EXISTS) .tmp/anotherQtGUI1.0.0 || $(MKDIR) .tmp/anotherQtGUI1.0.0 |
- $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/anotherQtGUI1.0.0/ && $(COPY_FILE) --parents mainwindow.h .tmp/anotherQtGUI1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp .tmp/anotherQtGUI1.0.0/ && $(COPY_FILE) --parents mainwindow.ui .tmp/anotherQtGUI1.0.0/ && (cd `dirname .tmp/anotherQtGUI1.0.0` && $(TAR) anotherQtGUI1.0.0.tar anotherQtGUI1.0.0 && $(COMPRESS) anotherQtGUI1.0.0.tar) && $(MOVE) `dirname .tmp/anotherQtGUI1.0.0`/anotherQtGUI1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/anotherQtGUI1.0.0 |
- |
- |
-clean:compiler_clean |
- -$(DEL_FILE) $(OBJECTS) |
- -$(DEL_FILE) *~ core *.core |
- |
- |
-####### Sub-libraries |
- |
-distclean: clean |
- -$(DEL_FILE) $(TARGET) |
- -$(DEL_FILE) Makefile |
- |
- |
-check: first |
- |
-mocclean: compiler_moc_header_clean compiler_moc_source_clean |
- |
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all |
- |
-compiler_moc_header_make_all: moc_mainwindow.cpp |
-compiler_moc_header_clean: |
- -$(DEL_FILE) moc_mainwindow.cpp |
-moc_mainwindow.cpp: mainwindow.h |
- /usr/lib/i386-linux-gnu/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp |
- |
-compiler_rcc_make_all: |
-compiler_rcc_clean: |
-compiler_image_collection_make_all: qmake_image_collection.cpp |
-compiler_image_collection_clean: |
- -$(DEL_FILE) qmake_image_collection.cpp |
-compiler_moc_source_make_all: |
-compiler_moc_source_clean: |
-compiler_uic_make_all: ui_mainwindow.h |
-compiler_uic_clean: |
- -$(DEL_FILE) ui_mainwindow.h |
-ui_mainwindow.h: mainwindow.ui |
- /usr/lib/i386-linux-gnu/qt4/bin/uic mainwindow.ui -o ui_mainwindow.h |
- |
-compiler_yacc_decl_make_all: |
-compiler_yacc_decl_clean: |
-compiler_yacc_impl_make_all: |
-compiler_yacc_impl_clean: |
-compiler_lex_make_all: |
-compiler_lex_clean: |
-compiler_clean: compiler_moc_header_clean compiler_uic_clean |
- |
-####### Compile |
- |
-main.o: main.cpp mainwindow.h |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp |
- |
-mainwindow.o: mainwindow.cpp mainwindow.h \ |
- ui_mainwindow.h |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp |
- |
-moc_mainwindow.o: moc_mainwindow.cpp |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp |
- |
-####### Install |
- |
-install: FORCE |
- |
-uninstall: FORCE |
- |
-FORCE: |
- |
Index: trunk/Chapter 01/anotherQtGUI/ui_mainwindow.h |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/ui_mainwindow.h (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/ui_mainwindow.h (nonexistent) |
@@ -1,87 +0,0 @@ |
-/******************************************************************************** |
-** Form generated from reading UI file 'mainwindow.ui' |
-** |
-** Created by: Qt User Interface Compiler version 4.8.6 |
-** |
-** WARNING! All changes made in this file will be lost when recompiling UI file! |
-********************************************************************************/ |
- |
-#ifndef UI_MAINWINDOW_H |
-#define UI_MAINWINDOW_H |
- |
-#include <QtCore/QVariant> |
-#include <QtGui/QAction> |
-#include <QtGui/QApplication> |
-#include <QtGui/QButtonGroup> |
-#include <QtGui/QHeaderView> |
-#include <QtGui/QLabel> |
-#include <QtGui/QMainWindow> |
-#include <QtGui/QMenuBar> |
-#include <QtGui/QPushButton> |
-#include <QtGui/QStatusBar> |
-#include <QtGui/QToolBar> |
-#include <QtGui/QWidget> |
- |
-QT_BEGIN_NAMESPACE |
- |
-class Ui_MainWindow |
-{ |
-public: |
- QWidget *centralWidget; |
- QPushButton *pushButton; |
- QPushButton *pushButton_2; |
- QLabel *label; |
- QMenuBar *menuBar; |
- QToolBar *mainToolBar; |
- QStatusBar *statusBar; |
- |
- void setupUi(QMainWindow *MainWindow) |
- { |
- if (MainWindow->objectName().isEmpty()) |
- MainWindow->setObjectName(QString::fromUtf8("MainWindow")); |
- MainWindow->resize(572, 326); |
- centralWidget = new QWidget(MainWindow); |
- centralWidget->setObjectName(QString::fromUtf8("centralWidget")); |
- pushButton = new QPushButton(centralWidget); |
- pushButton->setObjectName(QString::fromUtf8("pushButton")); |
- pushButton->setGeometry(QRect(10, 10, 111, 51)); |
- pushButton_2 = new QPushButton(centralWidget); |
- pushButton_2->setObjectName(QString::fromUtf8("pushButton_2")); |
- pushButton_2->setGeometry(QRect(10, 70, 111, 51)); |
- label = new QLabel(centralWidget); |
- label->setObjectName(QString::fromUtf8("label")); |
- label->setGeometry(QRect(160, 10, 391, 261)); |
- MainWindow->setCentralWidget(centralWidget); |
- menuBar = new QMenuBar(MainWindow); |
- menuBar->setObjectName(QString::fromUtf8("menuBar")); |
- menuBar->setGeometry(QRect(0, 0, 572, 25)); |
- MainWindow->setMenuBar(menuBar); |
- mainToolBar = new QToolBar(MainWindow); |
- mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); |
- MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); |
- statusBar = new QStatusBar(MainWindow); |
- statusBar->setObjectName(QString::fromUtf8("statusBar")); |
- MainWindow->setStatusBar(statusBar); |
- |
- retranslateUi(MainWindow); |
- |
- QMetaObject::connectSlotsByName(MainWindow); |
- } // setupUi |
- |
- void retranslateUi(QMainWindow *MainWindow) |
- { |
- MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8)); |
- pushButton->setText(QApplication::translate("MainWindow", "Open Image", 0, QApplication::UnicodeUTF8)); |
- pushButton_2->setText(QApplication::translate("MainWindow", "Process", 0, QApplication::UnicodeUTF8)); |
- label->setText(QApplication::translate("MainWindow", "Image", 0, QApplication::UnicodeUTF8)); |
- } // retranslateUi |
- |
-}; |
- |
-namespace Ui { |
- class MainWindow: public Ui_MainWindow {}; |
-} // namespace Ui |
- |
-QT_END_NAMESPACE |
- |
-#endif // UI_MAINWINDOW_H |
/trunk/Chapter 01/anotherQtGUI/ui_mainwindow.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/mainwindow.h |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/mainwindow.h (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/mainwindow.h (nonexistent) |
@@ -1,48 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 1 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
-#ifndef MAINWINDOW_H |
-#define MAINWINDOW_H |
- |
-#include <QtGui/QMainWindow> |
-#include <QFileDialog> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-namespace Ui |
-{ |
- class MainWindow; |
-} |
- |
-class MainWindow : public QMainWindow |
-{ |
- Q_OBJECT |
- |
-public: |
- MainWindow(QWidget *parent = 0); |
- ~MainWindow(); |
- |
-private: |
- Ui::MainWindow *ui; |
- cv::Mat image; // the image variable |
- |
-private slots: |
- void on_pushButton_2_clicked(); |
- void on_pushButton_clicked(); |
-}; |
- |
-#endif // MAINWINDOW_H |
/trunk/Chapter 01/anotherQtGUI/mainwindow.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/anotherQtGUI/Makefile.Debug |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/Makefile.Debug (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/Makefile.Debug (nonexistent) |
@@ -1,176 +0,0 @@ |
-############################################################################# |
-# Makefile for building: anotherQtGUI |
-# Generated by qmake (2.01a) (Qt 4.6.3) on: Thu Aug 5 11:10:44 2010 |
-# Project: anotherQtGUI.pro |
-# Template: app |
-############################################################################# |
- |
-####### Compiler, tools and options |
- |
-CC = cl |
-CXX = cl |
-DEFINES = -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT |
-CFLAGS = -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -W3 $(DEFINES) |
-CXXFLAGS = -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 $(DEFINES) |
-INCPATH = -I"..\..\Qt\4.6.3\include\QtCore" -I"..\..\Qt\4.6.3\include\QtGui" -I"..\..\Qt\4.6.3\include" -I"..\..\OpenCV2.1\include\opencv" -I"..\..\Qt\4.6.3\include\ActiveQt" -I"debug" -I"." -I"..\..\Qt\4.6.3\mkspecs\win32-msvc2008" |
-LINK = link |
-LFLAGS = /LIBPATH:"c:\Qt\4.6.3\lib" /NOLOGO /DEBUG /MANIFEST /MANIFESTFILE:"debug\anotherQtGUI.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" |
-LIBS = c:\Qt\4.6.3\lib\qtmaind.lib /LIBPATH:C:\OpenCV2.1\lib C:\OpenCV2.1\lib\cv210.lib C:\OpenCV2.1\lib\cxcore210.lib C:\OpenCV2.1\lib\highgui210.lib c:\Qt\4.6.3\lib\QtGuid4.lib c:\Qt\4.6.3\lib\QtCored4.lib |
-QMAKE = c:\Qt\4.6.3\bin\qmake.exe |
-IDC = c:\Qt\4.6.3\bin\idc.exe |
-IDL = midl |
-ZIP = zip -r -9 |
-DEF_FILE = |
-RES_FILE = |
-COPY = copy /y |
-COPY_FILE = $(COPY) |
-COPY_DIR = xcopy /s /q /y /i |
-DEL_FILE = del |
-DEL_DIR = rmdir |
-MOVE = move |
-CHK_DIR_EXISTS= if not exist |
-MKDIR = mkdir |
-INSTALL_FILE = $(COPY_FILE) |
-INSTALL_PROGRAM = $(COPY_FILE) |
-INSTALL_DIR = $(COPY_DIR) |
- |
-####### Output directory |
- |
-OBJECTS_DIR = debug |
- |
-####### Files |
- |
-SOURCES = main.cpp \ |
- mainwindow.cpp debug\moc_mainwindow.cpp |
-OBJECTS = debug\main.obj \ |
- debug\mainwindow.obj \ |
- debug\moc_mainwindow.obj |
-DIST = |
-QMAKE_TARGET = anotherQtGUI |
-DESTDIR = debug\ #avoid trailing-slash linebreak |
-TARGET = anotherQtGUI.exe |
-DESTDIR_TARGET = debug\anotherQtGUI.exe |
- |
-####### Implicit rules |
- |
-.SUFFIXES: .c .cpp .cc .cxx |
- |
-{.}.cpp{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{.}.cc{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{.}.cxx{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{.}.c{debug\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.cpp{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.cc{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.cxx{debug\}.obj:: |
- $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-{debug}.c{debug\}.obj:: |
- $(CC) -c $(CFLAGS) $(INCPATH) -Fodebug\ @<< |
- $< |
-<< |
- |
-####### Build rules |
- |
-first: all |
-all: Makefile.Debug $(DESTDIR_TARGET) |
- |
-$(DESTDIR_TARGET): ui_mainwindow.h $(OBJECTS) |
- $(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<< |
- $(OBJECTS) $(LIBS) |
-<< |
- mt.exe -nologo -manifest "debug\anotherQtGUI.intermediate.manifest" -outputresource:$(DESTDIR_TARGET);1 |
- |
- |
- |
-qmake: FORCE |
- @$(QMAKE) -spec ..\..\Qt\4.6.3\mkspecs\win32-msvc2008 -win32 CONFIG+=release -o Makefile.Debug anotherQtGUI.pro |
- |
-dist: |
- $(ZIP) anotherQtGUI.zip $(SOURCES) $(DIST) anotherQtGUI.pro ..\..\Qt\4.6.3\mkspecs\qconfig.pri ..\..\Qt\4.6.3\mkspecs\features\qt_functions.prf ..\..\Qt\4.6.3\mkspecs\features\qt_config.prf ..\..\Qt\4.6.3\mkspecs\features\exclusive_builds.prf ..\..\Qt\4.6.3\mkspecs\features\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_pre.prf ..\..\Qt\4.6.3\mkspecs\features\debug.prf ..\..\Qt\4.6.3\mkspecs\features\debug_and_release.prf ..\..\Qt\4.6.3\mkspecs\features\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\win32\default_post.prf ..\..\Qt\4.6.3\mkspecs\features\build_pass.prf ..\..\Qt\4.6.3\mkspecs\features\win32\rtti.prf ..\..\Qt\4.6.3\mkspecs\features\win32\exceptions.prf ..\..\Qt\4.6.3\mkspecs\features\win32\stl.prf ..\..\Qt\4.6.3\mkspecs\features\shared.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_exe.prf ..\..\Qt\4.6.3\mkspecs\features\win32\embed_manifest_dll.prf ..\..\Qt\4.6.3\mkspecs\features\warn_on.prf ..\..\Qt\4.6.3\mkspecs\features\qt.prf ..\..\Qt\4.6.3\mkspecs\features\win32\thread.prf ..\..\Qt\4.6.3\mkspecs\features\moc.prf ..\..\Qt\4.6.3\mkspecs\features\win32\windows.prf ..\..\Qt\4.6.3\mkspecs\features\resources.prf ..\..\Qt\4.6.3\mkspecs\features\uic.prf ..\..\Qt\4.6.3\mkspecs\features\yacc.prf ..\..\Qt\4.6.3\mkspecs\features\lex.prf ..\..\Qt\4.6.3\mkspecs\features\incredibuild_xge.prf ..\..\Qt\4.6.3\mkspecs\features\include_source_dir.prf c:\Qt\4.6.3\lib\qtmaind.prl HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES |
- |
-clean: compiler_clean |
- -$(DEL_FILE) debug\main.obj debug\mainwindow.obj debug\moc_mainwindow.obj |
- -$(DEL_FILE) debug\anotherQtGUI.intermediate.manifest debug\anotherQtGUI.exp debug\anotherQtGUI.pdb debug\anotherQtGUI.ilk vc*.pdb vc*.idb |
- |
-distclean: clean |
- -$(DEL_FILE) $(DESTDIR_TARGET) |
- -$(DEL_FILE) Makefile.Debug |
- |
-check: first |
- |
-mocclean: compiler_moc_header_clean compiler_moc_source_clean |
- |
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all |
- |
-compiler_moc_header_make_all: debug\moc_mainwindow.cpp |
-compiler_moc_header_clean: |
- -$(DEL_FILE) debug\moc_mainwindow.cpp |
-debug\moc_mainwindow.cpp: mainwindow.h |
- C:\Qt\4.6.3\bin\moc.exe $(DEFINES) $(INCPATH) -D_MSC_VER=1500 -DWIN32 mainwindow.h -o debug\moc_mainwindow.cpp |
- |
-compiler_rcc_make_all: |
-compiler_rcc_clean: |
-compiler_image_collection_make_all: qmake_image_collection.cpp |
-compiler_image_collection_clean: |
- -$(DEL_FILE) qmake_image_collection.cpp |
-compiler_moc_source_make_all: |
-compiler_moc_source_clean: |
-compiler_uic_make_all: ui_mainwindow.h |
-compiler_uic_clean: |
- -$(DEL_FILE) ui_mainwindow.h |
-ui_mainwindow.h: mainwindow.ui |
- c:\Qt\4.6.3\bin\uic.exe mainwindow.ui -o ui_mainwindow.h |
- |
-compiler_yacc_decl_make_all: |
-compiler_yacc_decl_clean: |
-compiler_yacc_impl_make_all: |
-compiler_yacc_impl_clean: |
-compiler_lex_make_all: |
-compiler_lex_clean: |
-compiler_clean: compiler_moc_header_clean compiler_uic_clean |
- |
- |
- |
-####### Compile |
- |
-debug\main.obj: main.cpp mainwindow.h |
- |
-debug\mainwindow.obj: mainwindow.cpp mainwindow.h \ |
- ui_mainwindow.h |
- |
-debug\moc_mainwindow.obj: debug\moc_mainwindow.cpp |
- |
-####### Install |
- |
-install: FORCE |
- |
-uninstall: FORCE |
- |
-FORCE: |
- |
Index: trunk/Chapter 01/anotherQtGUI/.project |
=================================================================== |
--- trunk/Chapter 01/anotherQtGUI/.project (revision 9) |
+++ trunk/Chapter 01/anotherQtGUI/.project (nonexistent) |
@@ -1,27 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8"?> |
-<projectDescription> |
- <name>OpenCV2-Cookbook-Chapter-01-Qt2</name> |
- <comment></comment> |
- <projects> |
- </projects> |
- <buildSpec> |
- <buildCommand> |
- <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> |
- <triggers>clean,full,incremental,</triggers> |
- <arguments> |
- </arguments> |
- </buildCommand> |
- <buildCommand> |
- <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> |
- <triggers>full,incremental,</triggers> |
- <arguments> |
- </arguments> |
- </buildCommand> |
- </buildSpec> |
- <natures> |
- <nature>org.eclipse.cdt.core.cnature</nature> |
- <nature>org.eclipse.cdt.core.ccnature</nature> |
- <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> |
- <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> |
- </natures> |
-</projectDescription> |
/trunk/Chapter 01/anotherQtGUI/.project |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 01/README.txt |
=================================================================== |
--- trunk/Chapter 01/README.txt (revision 9) |
+++ trunk/Chapter 01/README.txt (nonexistent) |
@@ -1,21 +0,0 @@ |
-This directory contains material supporting chapter 1 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
- |
-File: |
- main1.cpp |
-correspond to Recipes: |
-Creating an OpenCV project with MS Visual C++ |
-Creating an OpenCV project with Qt |
- |
-File: |
- main2.cpp |
-correspond to Recipe: |
-Loading, displaying and saving images |
- |
-Files in : |
- myQtGUIApp |
- anotherQtGUI |
-correspond to Recipe: |
-Creating a GUI application using Qt |
/trunk/Chapter 01/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 10/BGFGSegmentor.h |
=================================================================== |
--- trunk/Chapter 10/BGFGSegmentor.h (revision 9) |
+++ trunk/Chapter 10/BGFGSegmentor.h (nonexistent) |
@@ -1,76 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 10 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined BGFGSeg |
-#define BGFGSeg |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-#include "videoprocessor.h" |
- |
-class BGFGSegmentor : public FrameProcessor { |
- |
- cv::Mat gray; // current gray-level image |
- cv::Mat background; // accumulated background |
- cv::Mat backImage; // background image |
- cv::Mat foreground; // foreground image |
- double learningRate; // learning rate in background accumulation |
- int threshold; // threshold for foreground extraction |
- |
- public: |
- |
- BGFGSegmentor() : threshold(10), learningRate(0.01) {} |
- |
- // Set the threshold used to declare a foreground |
- void setThreshold(int t) { |
- |
- threshold= t; |
- } |
- |
- // Set the learning rate |
- void setLearningRate(double r) { |
- |
- learningRate= r; |
- } |
- |
- // processing method |
- void process(cv:: Mat &frame, cv:: Mat &output) { |
- |
- // convert to gray-level image |
- cv::cvtColor(frame, gray, CV_BGR2GRAY); |
- |
- // initialize background to 1st frame |
- if (background.empty()) |
- gray.convertTo(background, CV_32F); |
- |
- // convert background to 8U |
- background.convertTo(backImage,CV_8U); |
- |
- // compute difference between current image and background |
- cv::absdiff(backImage,gray,foreground); |
- |
- // apply threshold to foreground image |
- cv::threshold(foreground,output,threshold,255,cv::THRESH_BINARY_INV); |
- |
- // accumulate background |
- cv::accumulateWeighted(gray, background, learningRate, output); |
- } |
-}; |
- |
-#endif |
/trunk/Chapter 10/BGFGSegmentor.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 10/tracking.cpp |
=================================================================== |
--- trunk/Chapter 10/tracking.cpp (revision 9) |
+++ trunk/Chapter 10/tracking.cpp (nonexistent) |
@@ -1,159 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 10 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
-#include <opencv2/video/tracking.hpp> |
- |
-#include "featuretracker.h" |
- |
-int main() |
-{ |
- // Create video procesor instance |
- VideoProcessor processor; |
- |
- // Create feature tracker instance |
- FeatureTracker tracker; |
- |
- // Open video file |
- processor.setInput("../bike.avi"); |
- |
- // set frame processor |
- processor.setFrameProcessor(&tracker); |
- |
- // Declare a window to display the video |
- processor.displayOutput("Tracked Features"); |
- |
- // Play the video at the original frame rate |
- processor.setDelay(1000./processor.getFrameRate()); |
- |
- // Start the process |
- processor.run(); |
- |
- cv::waitKey(); |
- /* |
- // Open the video file |
- cv::VideoCapture capture("../bike.avi"); |
- // check if video successfully opened |
- if (!capture.isOpened()) |
- return 1; |
- |
- // Get the frame rate |
- double rate= capture.get(CV_CAP_PROP_FPS); |
- |
- bool stop(false); |
- cv::Mat frame; // current video frame |
- cv::namedWindow("Extracted Frame"); |
- |
- // Delay between each frame |
- // corresponds to video frame rate |
- int delay= 1000/rate/2; |
- |
- |
- |
- cv::Mat gray,gray_prev; |
- std::vector<cv::Point2f> points[2]; |
- std::vector<cv::Point2f> features; |
- const int MAX_COUNT = 500; |
- cv::Size winSize(10,10); |
- cv::TermCriteria termcrit(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03); |
- bool firstframe =true; |
- |
- |
- |
- // for all frames in video |
- while (!stop) { |
- |
- // read next frame if any |
- if (!capture.read(frame)) |
- break; |
- |
- |
- cv::cvtColor(frame, gray, CV_BGR2GRAY); |
- if(firstframe) |
- { |
- cv::goodFeaturesToTrack(gray, features, MAX_COUNT, 0.01, 10, cv::Mat(), 3, 0, 0.04); |
- cv::cornerSubPix(gray, features, winSize, cv::Size(-1,-1), termcrit); |
- points[0].insert(points[0].end(),features.begin(),features.end()); |
- firstframe=false; |
- } |
- |
- { |
- std::vector<uchar> status; |
- std::vector<float> err; |
- if(gray_prev.empty()) |
- gray.copyTo(gray_prev); |
- cv::calcOpticalFlowPyrLK(gray_prev, gray, points[0], points[1], status, err, winSize,3, termcrit, 0); |
- size_t i, k; |
- for( i = k = 0; i < points[1].size(); i++ ) |
- { |
- if( !status[i] ) |
- continue; |
- if ((abs(points[0][i].x-points[1][i].x)+(abs(points[0][i].y-points[1][i].y))<2)) |
- continue; |
- |
- cv::line( frame, points[0][i],points[1][i], cv::Scalar(0,255,0)); |
- points[1][k++] = points[1][i]; |
- cv::circle( frame, points[1][i], 3, cv::Scalar(0,255,0), -1, 8); |
- } |
- points[1].resize(k); |
- } |
- if(points[1].size()<=10) |
- firstframe=true; |
- std::swap(points[1], points[0]); |
- cv::swap(gray_prev, gray); |
- |
- |
- cv::imshow("Extracted Frame",frame); |
- |
- // introduce a delay |
- // or press key to stop |
- if (cv::waitKey(delay)>=0) |
- stop= true; |
- } |
- |
- // Close the video file |
- capture.release(); |
- |
- cv::waitKey(); |
- |
- |
- // Create instance |
- VideoProcessor processor; |
- // Open video file |
- processor.setInput("../bike.avi"); |
- // Output filename |
-// processor.setOutput("../output/bikeOut",".jpg"); |
- |
- // Declare a window to display the video |
- processor.displayInput("Current Frame"); |
- processor.displayOutput("Output Frame"); |
- |
- // Play the video at the original frame rate |
- processor.setDelay(1000./processor.getFrameRate()); |
- |
- // Set the frame processor callback function |
- processor.setFrameProcessor(draw); |
- |
- // Start the process |
- processor.run(); |
- |
- cv::waitKey(5000);*/ |
-} |
\ No newline at end of file |
/trunk/Chapter 10/tracking.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 10/videoprocessing.cpp |
=================================================================== |
--- trunk/Chapter 10/videoprocessing.cpp (revision 9) |
+++ trunk/Chapter 10/videoprocessing.cpp (nonexistent) |
@@ -1,137 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 10 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-#include "videoprocessor.h" |
- |
-void draw(cv::Mat& img, cv::Mat& out) { |
- |
- img.copyTo(out); |
- cv::circle(out, cv::Point(100,100),5,cv::Scalar(255,0,0),2); |
-} |
- |
-void canny(cv::Mat& img, cv::Mat& out) { |
- |
- // Convert to gray |
- cv::cvtColor(img,out,CV_BGR2GRAY); |
- // Compute Canny edges |
- cv::Canny(out,out,100,200); |
- // Invert the image |
- cv::threshold(out,out,128,255,cv::THRESH_BINARY_INV); |
-} |
- |
-int main() |
-{ |
- // Open the video file |
- cv::VideoCapture capture("../bike.avi"); |
- // check if video successfully opened |
- if (!capture.isOpened()) |
- return 1; |
- |
- // Get the frame rate |
- double rate= capture.get(CV_CAP_PROP_FPS); |
- |
- bool stop(false); |
- cv::Mat frame; // current video frame |
- cv::namedWindow("Extracted Frame"); |
- |
- // Delay between each frame |
- // corresponds to video frame rate |
- int delay= 1000/rate; |
- |
- // for all frames in video |
- while (!stop) { |
- |
- // read next frame if any |
- if (!capture.read(frame)) |
- break; |
- |
- cv::imshow("Extracted Frame",frame); |
- |
- // introduce a delay |
- // or press key to stop |
- if (cv::waitKey(delay)>=0) |
- stop= true; |
- } |
- |
- // Close the video file |
- capture.release(); |
- |
- cv::waitKey(); |
- |
- // Now using the VideoProcessor class |
- |
- // Create instance |
- VideoProcessor processor; |
- // Open video file |
- processor.setInput("../bike.avi"); |
- // Declare a window to display the video |
- processor.displayInput("Input Video"); |
- processor.displayOutput("Output Video"); |
- // Play the video at the original frame rate |
- processor.setDelay(1000./processor.getFrameRate()); |
- // Set the frame processor callback function |
- processor.setFrameProcessor(canny); |
- // Start the process |
- processor.run(); |
- cv::waitKey(); |
- |
- // Second test |
- // Create instance |
- // VideoProcessor processor; |
- // Open video file |
- processor.setInput("../bike.avi"); |
- |
- // Get basic info about video file |
- cv::Size size= processor.getFrameSize(); |
- std::cout << size.width << " " << size.height << std::endl; |
- std::cout << processor.getFrameRate() << std::endl; |
- std::cout << processor.getTotalFrameCount() << std::endl; |
- std::cout << processor.getFrameNumber() << std::endl; |
- std::cout << processor.getPositionMS() << std::endl; |
- |
- // No processing |
- processor.dontCallProcess(); |
- // Output filename |
-// processor.setOutput("../output/bikeOut",".jpg"); |
- char codec[4]; |
- processor.setOutput("../output/bike.avi",processor.getCodec(codec),processor.getFrameRate()); |
- std::cout << "Codec: " << codec[0] << codec[1] << codec[2] << codec[3] << std::endl; |
- |
- // Position the stream at frame 300 |
- // processor.setFrameNumber(300); |
- // processor.stopAtFrameNo(120); |
- |
- // Declare a window to display the video |
- processor.displayInput("Current Frame"); |
- processor.displayOutput("Output Frame"); |
- |
- // Play the video at the original frame rate |
- processor.setDelay(1000./processor.getFrameRate()); |
- |
- // Start the process |
- processor.run(); |
- |
- std::cout << processor.getFrameNumber() << std::endl; |
- std::cout << processor.getPositionMS() << std::endl; |
- |
- cv::waitKey(); |
-} |
\ No newline at end of file |
/trunk/Chapter 10/videoprocessing.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 10/README.txt |
=================================================================== |
--- trunk/Chapter 10/README.txt (revision 9) |
+++ trunk/Chapter 10/README.txt (nonexistent) |
@@ -1,23 +0,0 @@ |
-This directory contains material supporting chapter 10 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-Files: |
- videoprocessing.cpp |
- videoprocessor.h |
-correspond to Recipes: |
-Reading Video Sequences |
-Processing the Video Frames |
-Writing Video Sequences |
- |
-Files: |
- featuretracker.h |
- tracking.cpp |
-correspond to Recipe: |
-Tracking Feature Points in Video |
- |
-Files: |
- BGFGSegmentor.h |
- foreground.cpp |
-correspond to Recipe: |
-Extracting the Foreground Objects in Video |
/trunk/Chapter 10/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 10/foreground.cpp |
=================================================================== |
--- trunk/Chapter 10/foreground.cpp (revision 9) |
+++ trunk/Chapter 10/foreground.cpp (nonexistent) |
@@ -1,95 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 10 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/video/background_segm.hpp> |
- |
-#include "videoprocessor.h" |
-#include "BGFGSegmentor.h" |
- |
-int main() |
-{ |
- // Open the video file |
- cv::VideoCapture capture("../bike.avi"); |
- // check if video successfully opened |
- if (!capture.isOpened()) |
- return 0; |
- |
- // current video frame |
- cv::Mat frame; |
- // foreground binary image |
- cv::Mat foreground; |
- |
- cv::namedWindow("Extracted Foreground"); |
- |
- // The Mixture of Gaussian object |
- // used with all default parameters |
- cv::BackgroundSubtractorMOG mog; |
- |
- bool stop(false); |
- // for all frames in video |
- while (!stop) { |
- |
- // read next frame if any |
- if (!capture.read(frame)) |
- break; |
- |
- // update the background |
- // and return the foreground |
- mog(frame,foreground,0.01); |
- |
- // Complement the image |
- cv::threshold(foreground,foreground,128,255,cv::THRESH_BINARY_INV); |
- |
- // show foreground |
- cv::imshow("Extracted Foreground",foreground); |
- |
- // introduce a delay |
- // or press key to stop |
- if (cv::waitKey(10)>=0) |
- stop= true; |
- } |
- |
- cv::waitKey(); |
- |
- // Create video procesor instance |
- VideoProcessor processor; |
- |
- // Create background/foreground segmentor |
- BGFGSegmentor segmentor; |
- segmentor.setThreshold(25); |
- |
- // Open video file |
- processor.setInput("../bike.avi"); |
- |
- // set frame processor |
- processor.setFrameProcessor(&segmentor); |
- |
- // Declare a window to display the video |
- processor.displayOutput("Extracted Foreground"); |
- |
- // Play the video at the original frame rate |
- processor.setDelay(1000./processor.getFrameRate()); |
- |
- // Start the process |
- processor.run(); |
- |
- cv::waitKey(); |
-} |
\ No newline at end of file |
/trunk/Chapter 10/foreground.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 10/videoprocessor.h |
=================================================================== |
--- trunk/Chapter 10/videoprocessor.h (revision 9) |
+++ trunk/Chapter 10/videoprocessor.h (nonexistent) |
@@ -1,497 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 10 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined VPROCESSOR |
-#define VPROCESSOR |
- |
-#include <iostream> |
-#include <iomanip> |
-#include <sstream> |
-#include <string> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-// The frame processor interface |
-class FrameProcessor { |
- |
- public: |
- // processing method |
- virtual void process(cv:: Mat &input, cv:: Mat &output)= 0; |
-}; |
- |
-class VideoProcessor { |
- |
- private: |
- |
- // the OpenCV video capture object |
- cv::VideoCapture capture; |
- // the callback function to be called |
- // for the processing of each frame |
- void (*process)(cv::Mat&, cv::Mat&); |
- // the pointer to the class implementing |
- // the FrameProcessor interface |
- FrameProcessor *frameProcessor; |
- // a bool to determine if the |
- // process callback will be called |
- bool callIt; |
- // Input display window name |
- std::string windowNameInput; |
- // Output display window name |
- std::string windowNameOutput; |
- // delay between each frame processing |
- int delay; |
- // number of processed frames |
- long fnumber; |
- // stop at this frame number |
- long frameToStop; |
- // to stop the processing |
- bool stop; |
- |
- // vector of image filename to be used as input |
- std::vector<std::string> images; |
- // image vector iterator |
- std::vector<std::string>::const_iterator itImg; |
- |
- // the OpenCV video writer object |
- cv::VideoWriter writer; |
- // output filename |
- std::string outputFile; |
- |
- // current index for output images |
- int currentIndex; |
- // number of digits in output image filename |
- int digits; |
- // extension of output images |
- std::string extension; |
- |
- // to get the next frame |
- // could be: video file; camera; vector of images |
- bool readNextFrame(cv::Mat& frame) { |
- |
- if (images.size()==0) |
- return capture.read(frame); |
- else { |
- |
- if (itImg != images.end()) { |
- |
- frame= cv::imread(*itImg); |
- itImg++; |
- return frame.data != 0; |
- } |
- } |
- } |
- |
- // to write the output frame |
- // could be: video file or images |
- void writeNextFrame(cv::Mat& frame) { |
- |
- if (extension.length()) { // then we write images |
- |
- std::stringstream ss; |
- ss << outputFile << std::setfill('0') << std::setw(digits) << currentIndex++ << extension; |
- cv::imwrite(ss.str(),frame); |
- |
- } else { // then write video file |
- |
- writer.write(frame); |
- } |
- } |
- |
- public: |
- |
- // Constructor setting the default values |
- VideoProcessor() : callIt(false), delay(-1), |
- fnumber(0), stop(false), digits(0), frameToStop(-1), |
- process(0), frameProcessor(0) {} |
- |
- // set the name of the video file |
- bool setInput(std::string filename) { |
- |
- fnumber= 0; |
- // In case a resource was already |
- // associated with the VideoCapture instance |
- capture.release(); |
- images.clear(); |
- |
- // Open the video file |
- return capture.open(filename); |
- } |
- |
- // set the camera ID |
- bool setInput(int id) { |
- |
- fnumber= 0; |
- // In case a resource was already |
- // associated with the VideoCapture instance |
- capture.release(); |
- images.clear(); |
- |
- // Open the video file |
- return capture.open(id); |
- } |
- |
- // set the vector of input images |
- bool setInput(const std::vector<std::string>& imgs) { |
- |
- fnumber= 0; |
- // In case a resource was already |
- // associated with the VideoCapture instance |
- capture.release(); |
- |
- // the input will be this vector of images |
- images= imgs; |
- itImg= images.begin(); |
- |
- return true; |
- } |
- |
- // set the output video file |
- // by default the same parameters than input video will be used |
- bool setOutput(const std::string &filename, int codec=0, double framerate=0.0, bool isColor=true) { |
- |
- outputFile= filename; |
- extension.clear(); |
- |
- if (framerate==0.0) |
- framerate= getFrameRate(); // same as input |
- |
- char c[4]; |
- // use same codec as input |
- if (codec==0) { |
- codec= getCodec(c); |
- } |
- |
- // Open output video |
- return writer.open(outputFile, // filename |
- codec, // codec to be used |
- framerate, // frame rate of the video |
- getFrameSize(), // frame size |
- isColor); // color video? |
- } |
- |
- // set the output as a series of image files |
- // extension must be ".jpg", ".bmp" ... |
- bool setOutput(const std::string &filename, // filename prefix |
- const std::string &ext, // image file extension |
- int numberOfDigits=3, // number of digits |
- int startIndex=0) { // start index |
- |
- // number of digits must be positive |
- if (numberOfDigits<0) |
- return false; |
- |
- // filenames and their common extension |
- outputFile= filename; |
- extension= ext; |
- |
- // number of digits in the file numbering scheme |
- digits= numberOfDigits; |
- // start numbering at this index |
- currentIndex= startIndex; |
- |
- return true; |
- } |
- |
- // set the callback function that will be called for each frame |
- void setFrameProcessor(void (*frameProcessingCallback)(cv::Mat&, cv::Mat&)) { |
- |
- // invalidate frame processor class instance |
- frameProcessor= 0; |
- // this is the frame processor function that will be called |
- process= frameProcessingCallback; |
- callProcess(); |
- } |
- |
- // set the instance of the class that implements the FrameProcessor interface |
- void setFrameProcessor(FrameProcessor* frameProcessorPtr) { |
- |
- // invalidate callback function |
- process= 0; |
- // this is the frame processor instance that will be called |
- frameProcessor= frameProcessorPtr; |
- callProcess(); |
- } |
- |
- // stop streaming at this frame number |
- void stopAtFrameNo(long frame) { |
- |
- frameToStop= frame; |
- } |
- |
- // process callback to be called |
- void callProcess() { |
- |
- callIt= true; |
- } |
- |
- // do not call process callback |
- void dontCallProcess() { |
- |
- callIt= false; |
- } |
- |
- // to display the processed frames |
- void displayInput(std::string wn) { |
- |
- windowNameInput= wn; |
- cv::namedWindow(windowNameInput); |
- } |
- |
- // to display the processed frames |
- void displayOutput(std::string wn) { |
- |
- windowNameOutput= wn; |
- cv::namedWindow(windowNameOutput); |
- } |
- |
- // do not display the processed frames |
- void dontDisplay() { |
- |
- cv::destroyWindow(windowNameInput); |
- cv::destroyWindow(windowNameOutput); |
- windowNameInput.clear(); |
- windowNameOutput.clear(); |
- } |
- |
- // set a delay between each frame |
- // 0 means wait at each frame |
- // negative means no delay |
- void setDelay(int d) { |
- |
- delay= d; |
- } |
- |
- // a count is kept of the processed frames |
- long getNumberOfProcessedFrames() { |
- |
- return fnumber; |
- } |
- |
- // return the size of the video frame |
- cv::Size getFrameSize() { |
- |
- if (images.size()==0) { |
- |
- // get size of from the capture device |
- int w= static_cast<int>(capture.get(CV_CAP_PROP_FRAME_WIDTH)); |
- int h= static_cast<int>(capture.get(CV_CAP_PROP_FRAME_HEIGHT)); |
- |
- return cv::Size(w,h); |
- |
- } else { // if input is vector of images |
- |
- cv::Mat tmp= cv::imread(images[0]); |
- if (!tmp.data) return cv::Size(0,0); |
- else return tmp.size(); |
- } |
- } |
- |
- // return the frame number of the next frame |
- long getFrameNumber() { |
- |
- if (images.size()==0) { |
- |
- // get info of from the capture device |
- long f= static_cast<long>(capture.get(CV_CAP_PROP_POS_FRAMES)); |
- return f; |
- |
- } else { // if input is vector of images |
- |
- return static_cast<long>(itImg-images.begin()); |
- } |
- } |
- |
- // return the position in ms |
- double getPositionMS() { |
- |
- // undefined for vector of images |
- if (images.size()!=0) return 0.0; |
- |
- double t= capture.get(CV_CAP_PROP_POS_MSEC); |
- return t; |
- } |
- |
- // return the frame rate |
- double getFrameRate() { |
- |
- // undefined for vector of images |
- if (images.size()!=0) return 0; |
- |
- double r= capture.get(CV_CAP_PROP_FPS); |
- return r; |
- } |
- |
- // return the number of frames in video |
- long getTotalFrameCount() { |
- |
- // for vector of images |
- if (images.size()!=0) return images.size(); |
- |
- long t= capture.get(CV_CAP_PROP_FRAME_COUNT); |
- return t; |
- } |
- |
- // get the codec of input video |
- int getCodec(char codec[4]) { |
- |
- // undefined for vector of images |
- if (images.size()!=0) return -1; |
- |
- union { |
- int value; |
- char code[4]; } returned; |
- |
- returned.value= static_cast<int>(capture.get(CV_CAP_PROP_FOURCC)); |
- |
- codec[0]= returned.code[0]; |
- codec[1]= returned.code[1]; |
- codec[2]= returned.code[2]; |
- codec[3]= returned.code[3]; |
- |
- return returned.value; |
- } |
- |
- // go to this frame number |
- bool setFrameNumber(long pos) { |
- |
- // for vector of images |
- if (images.size()!=0) { |
- |
- // move to position in vector |
- itImg= images.begin() + pos; |
- // is it a valid position? |
- if (pos < images.size()) |
- return true; |
- else |
- return false; |
- |
- } else { // if input is a capture device |
- |
- return capture.set(CV_CAP_PROP_POS_FRAMES, pos); |
- } |
- } |
- |
- // go to this position |
- bool setPositionMS(double pos) { |
- |
- // not defined in vector of images |
- if (images.size()!=0) |
- return false; |
- else |
- return capture.set(CV_CAP_PROP_POS_MSEC, pos); |
- } |
- |
- // go to this position expressed in fraction of total film length |
- bool setRelativePosition(double pos) { |
- |
- // for vector of images |
- if (images.size()!=0) { |
- |
- // move to position in vector |
- long posI= static_cast<long>(pos*images.size()+0.5); |
- itImg= images.begin() + posI; |
- // is it a valid position? |
- if (posI < images.size()) |
- return true; |
- else |
- return false; |
- |
- } else { // if input is a capture device |
- |
- return capture.set(CV_CAP_PROP_POS_AVI_RATIO, pos); |
- } |
- } |
- |
- // Stop the processing |
- void stopIt() { |
- |
- stop= true; |
- } |
- |
- // Is the process stopped? |
- bool isStopped() { |
- |
- return stop; |
- } |
- |
- // Is a capture device opened? |
- bool isOpened() { |
- |
- return capture.isOpened() || !images.empty(); |
- } |
- |
- // to grab (and process) the frames of the sequence |
- void run() { |
- |
- // current frame |
- cv::Mat frame; |
- // output frame |
- cv::Mat output; |
- |
- // if no capture device has been set |
- if (!isOpened()) |
- return; |
- |
- stop= false; |
- |
- while (!isStopped()) { |
- |
- // read next frame if any |
- if (!readNextFrame(frame)) |
- break; |
- |
- // display input frame |
- if (windowNameInput.length()!=0) |
- cv::imshow(windowNameInput,frame); |
- |
- // calling the process function or method |
- if (callIt) { |
- |
- // process the frame |
- if (process) |
- process(frame, output); |
- else if (frameProcessor) |
- frameProcessor->process(frame,output); |
- // increment frame number |
- fnumber++; |
- |
- } else { |
- |
- output= frame; |
- } |
- |
- // write output sequence |
- if (outputFile.length()!=0) |
- writeNextFrame(output); |
- |
- // display output frame |
- if (windowNameOutput.length()!=0) |
- cv::imshow(windowNameOutput,output); |
- |
- // introduce a delay |
- if (delay>=0 && cv::waitKey(delay)>=0) |
- stopIt(); |
- |
- // check if we should stop |
- if (frameToStop>=0 && getFrameNumber()==frameToStop) |
- stopIt(); |
- } |
- } |
-}; |
- |
-#endif |
/trunk/Chapter 10/videoprocessor.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 10/featuretracker.h |
=================================================================== |
--- trunk/Chapter 10/featuretracker.h (revision 9) |
+++ trunk/Chapter 10/featuretracker.h (nonexistent) |
@@ -1,141 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 10 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined FTRACKER |
-#define FTRACKER |
- |
-#include <string> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
-#include <opencv2/video/tracking.hpp> |
- |
-#include "videoprocessor.h" |
- |
-class FeatureTracker : public FrameProcessor { |
- |
- cv::Mat gray; // current gray-level image |
- cv::Mat gray_prev; // previous gray-level image |
- std::vector<cv::Point2f> points[2]; // tracked features from 0->1 |
- std::vector<cv::Point2f> initial; // initial position of tracked points |
- std::vector<cv::Point2f> features; // detected features |
- int max_count; // maximum number of features to detect |
- double qlevel; // quality level for feature detection |
- double minDist; // minimum distance between two feature points |
- std::vector<uchar> status; // status of tracked features |
- std::vector<float> err; // error in tracking |
- |
- public: |
- |
- FeatureTracker() : max_count(500), qlevel(0.01), minDist(10.) {} |
- |
- // processing method |
- void process(cv:: Mat &frame, cv:: Mat &output) { |
- |
- // convert to gray-level image |
- cv::cvtColor(frame, gray, CV_BGR2GRAY); |
- frame.copyTo(output); |
- |
- // 1. if new feature points must be added |
- if(addNewPoints()) |
- { |
- // detect feature points |
- detectFeaturePoints(); |
- // add the detected features to the currently tracked features |
- points[0].insert(points[0].end(),features.begin(),features.end()); |
- initial.insert(initial.end(),features.begin(),features.end()); |
- } |
- |
- // for first image of the sequence |
- if(gray_prev.empty()) |
- gray.copyTo(gray_prev); |
- |
- // 2. track features |
- cv::calcOpticalFlowPyrLK(gray_prev, gray, // 2 consecutive images |
- points[0], // input point position in first image |
- points[1], // output point postion in the second image |
- status, // tracking success |
- err); // tracking error |
- |
- // 2. loop over the tracked points to reject the undesirables |
- int k=0; |
- for( int i= 0; i < points[1].size(); i++ ) { |
- |
- // do we keep this point? |
- if (acceptTrackedPoint(i)) { |
- |
- // keep this point in vector |
- initial[k]= initial[i]; |
- points[1][k++] = points[1][i]; |
- } |
- } |
- |
- // eliminate unsuccesful points |
- points[1].resize(k); |
- initial.resize(k); |
- |
- // 3. handle the accepted tracked points |
- handleTrackedPoints(frame, output); |
- |
- // 4. current points and image become previous ones |
- std::swap(points[1], points[0]); |
- cv::swap(gray_prev, gray); |
- } |
- |
- // feature point detection |
- void detectFeaturePoints() { |
- |
- // detect the features |
- cv::goodFeaturesToTrack(gray, // the image |
- features, // the output detected features |
- max_count, // the maximum number of features |
- qlevel, // quality level |
- minDist); // min distance between two features |
- } |
- |
- // determine if new points should be added |
- bool addNewPoints() { |
- |
- // if too few points |
- return points[0].size()<=10; |
- } |
- |
- // determine which tracked point should be accepted |
- bool acceptTrackedPoint(int i) { |
- |
- return status[i] && |
- // if point has moved |
- (abs(points[0][i].x-points[1][i].x)+ |
- (abs(points[0][i].y-points[1][i].y))>2); |
- } |
- |
- // handle the currently tracked points |
- void handleTrackedPoints(cv:: Mat &frame, cv:: Mat &output) { |
- |
- // for all tracked points |
- for(int i= 0; i < points[1].size(); i++ ) { |
- |
- // draw line and circle |
- cv::line(output, initial[i], points[1][i], cv::Scalar(255,255,255)); |
- cv::circle(output, points[1][i], 3, cv::Scalar(255,255,255),-1); |
- } |
- } |
-}; |
- |
-#endif |
/trunk/Chapter 10/featuretracker.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/images/boldt.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/boldt.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/puppy.bmp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/puppy.bmp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/binary.bmp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/binary.bmp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/monument1.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/monument1.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/monument2.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/monument2.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/fundy.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/fundy.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chariot.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chariot.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/group.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/group.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/building.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/building.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/logo.bmp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/logo.bmp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/bear.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/bear.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/dog.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/dog.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/bike.avi |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/bike.avi |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/sagouine.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/sagouine.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/tiger.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/tiger.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/parliament1.bmp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/parliament1.bmp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/lake.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/lake.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/parliament2.bmp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/parliament2.bmp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/marais.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/marais.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/parliament3.bmp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/parliament3.bmp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/polar.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/polar.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/church01.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/church01.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/church02.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/church02.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/church03.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/church03.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard10.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard10.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard11.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard11.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard30.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard30.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard12.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard12.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard31.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard31.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard13.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard13.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard32.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard32.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard14.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard14.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard15.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard15.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard33.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard33.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard16.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard16.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard34.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard34.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard17.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard17.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard35.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard35.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard18.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard18.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard36.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard36.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard19.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard19.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard37.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard37.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard38.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard38.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard39.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard39.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard01.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard01.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard20.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard20.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard02.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard02.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard21.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard21.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard03.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard03.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard22.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard22.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard04.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard04.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard40.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard40.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard23.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard23.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard05.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard05.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard41.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard41.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard24.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard24.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard06.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard06.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard42.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard42.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard25.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard25.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard07.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard07.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard43.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard43.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard26.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard26.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard08.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard08.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard27.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard27.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard09.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard09.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard28.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard28.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/chessboards/chessboard29.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/chessboards/chessboard29.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/baboon1.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/baboon1.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/baboon2.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/baboon2.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/moose.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/moose.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/baboon3.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/baboon3.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/baboon4.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/baboon4.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/waves.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/waves.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/road.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/road.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/rain.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/rain.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/canal1.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/canal1.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/binaryGroup.bmp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/binaryGroup.bmp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/canal2.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/canal2.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/tower.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/tower.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/images/beach.jpg |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/images/beach.jpg |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: trunk/.project |
=================================================================== |
--- trunk/.project (revision 9) |
+++ trunk/.project (nonexistent) |
@@ -1,27 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8"?> |
-<projectDescription> |
- <name>OpenCV2-Cookbook</name> |
- <comment></comment> |
- <projects> |
- </projects> |
- <buildSpec> |
- <buildCommand> |
- <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> |
- <triggers>clean,full,incremental,</triggers> |
- <arguments> |
- </arguments> |
- </buildCommand> |
- <buildCommand> |
- <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> |
- <triggers>full,incremental,</triggers> |
- <arguments> |
- </arguments> |
- </buildCommand> |
- </buildSpec> |
- <natures> |
- <nature>org.eclipse.cdt.core.cnature</nature> |
- <nature>org.eclipse.cdt.core.ccnature</nature> |
- <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> |
- <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> |
- </natures> |
-</projectDescription> |
/trunk/.project |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 02/colorReduce.cpp |
=================================================================== |
--- trunk/Chapter 02/colorReduce.cpp (revision 9) |
+++ trunk/Chapter 02/colorReduce.cpp (nonexistent) |
@@ -1,507 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 2 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-// using .ptr and [] |
-void colorReduce0(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols * image.channels(); // total number of elements per line |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= image.ptr<uchar>(j); |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- data[i]= data[i]/div*div + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
-// using .ptr and * ++ |
-void colorReduce1(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols * image.channels(); // total number of elements per line |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= image.ptr<uchar>(j); |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- *data++= *data/div*div + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
-// using .ptr and * ++ and modulo |
-void colorReduce2(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols * image.channels(); // total number of elements per line |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= image.ptr<uchar>(j); |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- int v= *data; |
- *data++= v - v%div + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
-// using .ptr and * ++ and bitwise |
-void colorReduce3(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols * image.channels(); // total number of elements per line |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= image.ptr<uchar>(j); |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- *data++= *data&mask + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
- |
-// direct pointer arithmetic |
-void colorReduce4(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols * image.channels(); // total number of elements per line |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- int step= image.step; // effective width |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- // get the pointer to the image buffer |
- uchar *data= image.data; |
- |
- for (int j=0; j<nl; j++) { |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- *(data+i)= *data&mask + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- |
- data+= step; // next line |
- } |
-} |
- |
-// using .ptr and * ++ and bitwise with image.cols * image.channels() |
-void colorReduce5(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= image.ptr<uchar>(j); |
- |
- for (int i=0; i<image.cols * image.channels(); i++) { |
- |
- // process each pixel --------------------- |
- |
- *data++= *data&mask + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
-// using .ptr and * ++ and bitwise (continuous) |
-void colorReduce6(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols * image.channels(); // total number of elements per line |
- |
- if (image.isContinuous()) { |
- // then no padded pixels |
- nc= nc*nl; |
- nl= 1; // it is now a 1D array |
- } |
- |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= image.ptr<uchar>(j); |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- *data++= *data&mask + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
-// using .ptr and * ++ and bitwise (continuous+channels) |
-void colorReduce7(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols ; // number of columns |
- |
- if (image.isContinuous()) { |
- // then no padded pixels |
- nc= nc*nl; |
- nl= 1; // it is now a 1D array |
- } |
- |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= image.ptr<uchar>(j); |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- *data++= *data&mask + div/2; |
- *data++= *data&mask + div/2; |
- *data++= *data&mask + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
- |
-// using Mat_ iterator |
-void colorReduce8(cv::Mat &image, int div=64) { |
- |
- // get iterators |
- cv::Mat_<cv::Vec3b>::iterator it= image.begin<cv::Vec3b>(); |
- cv::Mat_<cv::Vec3b>::iterator itend= image.end<cv::Vec3b>(); |
- |
- for ( ; it!= itend; ++it) { |
- |
- // process each pixel --------------------- |
- |
- (*it)[0]= (*it)[0]/div*div + div/2; |
- (*it)[1]= (*it)[1]/div*div + div/2; |
- (*it)[2]= (*it)[2]/div*div + div/2; |
- |
- // end of pixel processing ---------------- |
- } |
-} |
- |
-// using Mat_ iterator and bitwise |
-void colorReduce9(cv::Mat &image, int div=64) { |
- |
- // div must be a power of 2 |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- // get iterators |
- cv::Mat_<cv::Vec3b>::iterator it= image.begin<cv::Vec3b>(); |
- cv::Mat_<cv::Vec3b>::iterator itend= image.end<cv::Vec3b>(); |
- |
- // scan all pixels |
- for ( ; it!= itend; ++it) { |
- |
- // process each pixel --------------------- |
- |
- (*it)[0]= (*it)[0]&mask + div/2; |
- (*it)[1]= (*it)[1]&mask + div/2; |
- (*it)[2]= (*it)[2]&mask + div/2; |
- |
- // end of pixel processing ---------------- |
- } |
-} |
- |
-// using MatIterator_ |
-void colorReduce10(cv::Mat &image, int div=64) { |
- |
- // get iterators |
- cv::Mat_<cv::Vec3b> cimage= image; |
- cv::Mat_<cv::Vec3b>::iterator it=cimage.begin(); |
- cv::Mat_<cv::Vec3b>::iterator itend=cimage.end(); |
- |
- for ( ; it!= itend; it++) { |
- |
- // process each pixel --------------------- |
- |
- (*it)[0]= (*it)[0]/div*div + div/2; |
- (*it)[1]= (*it)[1]/div*div + div/2; |
- (*it)[2]= (*it)[2]/div*div + div/2; |
- |
- // end of pixel processing ---------------- |
- } |
-} |
- |
- |
-void colorReduce11(cv::Mat &image, int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols; // number of columns |
- |
- for (int j=0; j<nl; j++) { |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- image.at<cv::Vec3b>(j,i)[0]= image.at<cv::Vec3b>(j,i)[0]/div*div + div/2; |
- image.at<cv::Vec3b>(j,i)[1]= image.at<cv::Vec3b>(j,i)[1]/div*div + div/2; |
- image.at<cv::Vec3b>(j,i)[2]= image.at<cv::Vec3b>(j,i)[2]/div*div + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
-// with input/ouput images |
-void colorReduce12(const cv::Mat &image, // input image |
- cv::Mat &result, // output image |
- int div=64) { |
- |
- int nl= image.rows; // number of lines |
- int nc= image.cols ; // number of columns |
- |
- // allocate output image if necessary |
- result.create(image.rows,image.cols,image.type()); |
- |
- // created images have no padded pixels |
- nc= nc*nl; |
- nl= 1; // it is now a 1D array |
- |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- for (int j=0; j<nl; j++) { |
- |
- uchar* data= result.ptr<uchar>(j); |
- const uchar* idata= image.ptr<uchar>(j); |
- |
- for (int i=0; i<nc; i++) { |
- |
- // process each pixel --------------------- |
- |
- *data++= (*idata++)&mask + div/2; |
- *data++= (*idata++)&mask + div/2; |
- *data++= (*idata++)&mask + div/2; |
- |
- // end of pixel processing ---------------- |
- |
- } // end of line |
- } |
-} |
- |
-// using overloaded operators |
-void colorReduce13(cv::Mat &image, int div=64) { |
- |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- // perform color reduction |
- image=(image&cv::Scalar(mask,mask,mask))+cv::Scalar(div/2,div/2,div/2); |
-} |
- |
- |
-#define NTESTS 14 |
-#define NITERATIONS 20 |
- |
-int main() |
-{ |
- int64 t[NTESTS],tinit; |
- cv::Mat image1; |
- cv::Mat image2; |
- |
- // timer values set to 0 |
- for (int i=0; i<NTESTS; i++) |
- t[i]= 0; |
- |
- // repeat the tests several times |
- int n=NITERATIONS; |
- for (int k=0; k<n; k++) { |
- |
- std::cout << k << " of " << n << std::endl; |
- |
- image1= cv::imread("../image.jpg"); |
- if (!image1.data) |
- return 0; |
- |
- // using .ptr and [] |
- tinit= cv::getTickCount(); |
- colorReduce0(image1); |
- t[0]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using .ptr and * ++ |
- tinit= cv::getTickCount(); |
- colorReduce1(image1); |
- t[1]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using .ptr and * ++ and modulo |
- tinit= cv::getTickCount(); |
- colorReduce2(image1); |
- t[2]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using .ptr and * ++ and bitwise |
- tinit= cv::getTickCount(); |
- colorReduce3(image1); |
- t[3]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using direct pointer arithmetic |
- tinit= cv::getTickCount(); |
- colorReduce4(image1); |
- t[4]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using .ptr and * ++ and bitwise with image.cols * image.channels() |
- tinit= cv::getTickCount(); |
- colorReduce5(image1); |
- t[5]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using .ptr and * ++ and bitwise (continuous) |
- tinit= cv::getTickCount(); |
- colorReduce6(image1); |
- t[6]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using .ptr and * ++ and bitwise (continuous+channels) |
- tinit= cv::getTickCount(); |
- colorReduce7(image1); |
- t[7]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using Mat_ iterator |
- tinit= cv::getTickCount(); |
- colorReduce8(image1); |
- t[8]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using Mat_ iterator and bitwise |
- tinit= cv::getTickCount(); |
- colorReduce9(image1); |
- t[9]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using Mat_ iterator |
- tinit= cv::getTickCount(); |
- colorReduce10(image1); |
- t[10]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using at |
- tinit= cv::getTickCount(); |
- colorReduce11(image1); |
- t[11]+= cv::getTickCount()-tinit; |
- |
- image1= cv::imread("../image.jpg"); |
- // using input/output images |
- tinit= cv::getTickCount(); |
- cv::Mat result; |
- colorReduce12(image1, result); |
- t[12]+= cv::getTickCount()-tinit; |
- |
- image2= result; |
- |
- image1= cv::imread("../image.jpg"); |
- // using input/output images |
- tinit= cv::getTickCount(); |
- colorReduce13(image1); |
- t[13]+= cv::getTickCount()-tinit; |
- |
- //------------------------------ |
- } |
- |
- cv::namedWindow("Result"); |
- cv::imshow("Result",image2); |
- cv::namedWindow("Image Result"); |
- cv::imshow("Image Result",image1); |
- |
- // print average execution time |
- std::cout << std::endl << "-------------------------------------------" << std::endl << std::endl; |
- std::cout << "using .ptr and [] =" << 1000.*t[0]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using .ptr and * ++ =" << 1000.*t[1]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using .ptr and * ++ and modulo =" << 1000.*t[2]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using .ptr and * ++ and bitwise =" << 1000.*t[3]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using direct pointer arithmetic =" << 1000.*t[4]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using .ptr and * ++ and bitwise with image.cols * image.channels() =" << 1000.*t[5]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using .ptr and * ++ and bitwise (continuous) =" << 1000.*t[6]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using .ptr and * ++ and bitwise (continuous+channels) =" << 1000.*t[7]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using Mat_ iterator =" << 1000.*t[8]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using Mat_ iterator and bitwise =" << 1000.*t[9]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using MatIterator_ =" << 1000.*t[10]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using at =" << 1000.*t[11]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using input/output images =" << 1000.*t[12]/cv::getTickFrequency()/n << "ms" << std::endl; |
- std::cout << "using overloaded operators =" << 1000.*t[13]/cv::getTickFrequency()/n << "ms" << std::endl; |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 02/colorReduce.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 02/saltImage.cpp |
=================================================================== |
--- trunk/Chapter 02/saltImage.cpp (revision 9) |
+++ trunk/Chapter 02/saltImage.cpp (nonexistent) |
@@ -1,62 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 2 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-void salt(cv::Mat &image, int n) { |
- |
- int i,j; |
- for (int k=0; k<n; k++) { |
- |
- // rand() is the MFC random number generator |
- i= rand()%image.cols; |
- j= rand()%image.rows; |
- |
- |
- if (image.channels() == 1) { // gray-level image |
- |
- image.at<uchar>(j,i)= 255; |
- |
- } else if (image.channels() == 3) { // color image |
- |
- image.at<cv::Vec3b>(j,i)[0]= 255; |
- image.at<cv::Vec3b>(j,i)[1]= 255; |
- image.at<cv::Vec3b>(j,i)[2]= 255; |
- } |
- } |
-} |
- |
-int main() |
-{ |
- srand(cv::getTickCount()); // init random number generator |
- |
- cv::Mat image= cv::imread("boldt.jpg",0); |
- |
- salt(image,3000); |
- |
- cv::namedWindow("Image"); |
- cv::imshow("Image",image); |
- |
- cv::imwrite("salted.bmp",image); |
- |
- cv::waitKey(5000); |
- |
- return 0; |
-} |
- |
- |
/trunk/Chapter 02/saltImage.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 02/README.txt |
=================================================================== |
--- trunk/Chapter 02/README.txt (revision 9) |
+++ trunk/Chapter 02/README.txt (nonexistent) |
@@ -1,26 +0,0 @@ |
-This directory contains material supporting chapter 2 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-File: |
- saltImage.cpp |
-correspond to Recipe: |
-Accessing the pixel values |
- |
-File: |
- colorReduce.cpp |
-correspond to Recipes: |
-Scanning an image with pointers |
-Scanning an image with iterators |
-Writing efficient image scanning loops |
- |
-File: |
- contrast.cpp |
-correspond to Recipe: |
-Scanning an image with neighbour access |
- |
-File: |
- addImages.cpp |
-correspond to Recipes: |
-Performing simple image arithmetic |
-Defining regions of interest |
/trunk/Chapter 02/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 02/contrast.cpp |
=================================================================== |
--- trunk/Chapter 02/contrast.cpp (revision 9) |
+++ trunk/Chapter 02/contrast.cpp (nonexistent) |
@@ -1,151 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 2 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
- |
-void sharpen(const cv::Mat &image, cv::Mat &result) { |
- |
- result.create(image.size(), image.type()); // allocate if necessary |
- |
- for (int j= 1; j<image.rows-1; j++) { // for all rows (except first and last) |
- |
- const uchar* previous= image.ptr<const uchar>(j-1); // previous row |
- const uchar* current= image.ptr<const uchar>(j); // current row |
- const uchar* next= image.ptr<const uchar>(j+1); // next row |
- |
- uchar* output= result.ptr<uchar>(j); // output row |
- |
- for (int i=1; i<image.cols-1; i++) { |
- |
- *output++= cv::saturate_cast<uchar>(5*current[i]-current[i-1]-current[i+1]-previous[i]-next[i]); |
-// output[i]= cv::saturate_cast<uchar>(5*current[i]-current[i-1]-current[i+1]-previous[i]-next[i]); |
- } |
- } |
- |
- // Set the unprocess pixels to 0 |
- result.row(0).setTo(cv::Scalar(0)); |
- result.row(result.rows-1).setTo(cv::Scalar(0)); |
- result.col(0).setTo(cv::Scalar(0)); |
- result.col(result.cols-1).setTo(cv::Scalar(0)); |
-} |
- |
-void sharpen2(const cv::Mat &image, cv::Mat &result) { |
- |
- result.create(image.size(), image.type()); // allocate if necessary |
- |
- int step= image.step1(); |
- const uchar* previous= image.data; // ptr to previous row |
- const uchar* current= image.data+step; // ptr to current row |
- const uchar* next= image.data+2*step; // ptr to next row |
- uchar *output= result.data+step; // ptr to output row |
- |
- for (int j= 1; j<image.rows-1; j++) { // for each row (except first and last) |
- for (int i=1; i<image.cols-1; i++) { // for each column (except first and last) |
- |
- output[i]= cv::saturate_cast<uchar>(5*current[i]-current[i-1]-current[i+1]-previous[i]-next[i]); |
- } |
- |
- previous+= step; |
- current+= step; |
- next+= step; |
- output+= step; |
- } |
- |
- // Set the unprocess pixels to 0 |
- result.row(0).setTo(cv::Scalar(0)); |
- result.row(result.rows-1).setTo(cv::Scalar(0)); |
- result.col(0).setTo(cv::Scalar(0)); |
- result.col(result.cols-1).setTo(cv::Scalar(0)); |
-} |
- |
-void sharpen3(const cv::Mat &image, cv::Mat &result) { |
- |
- cv::Mat_<uchar>::const_iterator it= image.begin<uchar>()+image.step; |
- cv::Mat_<uchar>::const_iterator itend= image.end<uchar>()-image.step; |
- cv::Mat_<uchar>::const_iterator itup= image.begin<uchar>(); |
- cv::Mat_<uchar>::const_iterator itdown= image.begin<uchar>()+2*image.step; |
- |
- result.create(image.size(), image.type()); // allocate if necessary |
- cv::Mat_<uchar>::iterator itout= result.begin<uchar>()+result.step; |
- |
- for ( ; it!= itend; ++it, ++itup, ++itdown) { |
- |
- *itout= cv::saturate_cast<uchar>(*it *5 - *(it-1)- *(it+1)- *itup - *itdown); |
- } |
-} |
- |
-void sharpen2D(const cv::Mat &image, cv::Mat &result) { |
- |
- // Construct kernel (all entries initialized to 0) |
- cv::Mat kernel(3,3,CV_32F,cv::Scalar(0)); |
- // assigns kernel values |
- kernel.at<float>(1,1)= 5.0; |
- kernel.at<float>(0,1)= -1.0; |
- kernel.at<float>(2,1)= -1.0; |
- kernel.at<float>(1,0)= -1.0; |
- kernel.at<float>(1,2)= -1.0; |
- |
- //filter the image |
- cv::filter2D(image,result,image.depth(),kernel); |
-} |
- |
-int main() |
-{ |
- cv::Mat image= cv::imread("boldt.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- cv::Mat result; |
- result.create(image.size(),image.type()); |
- |
- double time= static_cast<double>(cv::getTickCount()); |
- sharpen(image, result); |
- time= (static_cast<double>(cv::getTickCount())-time)/cv::getTickFrequency(); |
- std::cout << "time= " << time << std::endl; |
- |
- cv::namedWindow("Image"); |
- cv::imshow("Image",result); |
- |
- image= cv::imread("boldt.jpg",0); |
- time= static_cast<double>(cv::getTickCount()); |
- sharpen3(image, result); |
- time= (static_cast<double>(cv::getTickCount())-time)/cv::getTickFrequency(); |
- std::cout << "time 3= " << time << std::endl; |
- |
- cv::namedWindow("Image 3"); |
- cv::imshow("Image 3",result); |
- |
- image= cv::imread("boldt.jpg",0); |
- time= static_cast<double>(cv::getTickCount()); |
- sharpen2D(image, result); |
- time= (static_cast<double>(cv::getTickCount())-time)/cv::getTickFrequency(); |
- std::cout << "time 2D= " << time << std::endl; |
- |
- cv::namedWindow("Image 2D"); |
- cv::imshow("Image 2D",result); |
- |
- cv::waitKey(); |
- |
- return 0; |
-} |
- |
- |
/trunk/Chapter 02/contrast.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 02/addImages.cpp |
=================================================================== |
--- trunk/Chapter 02/addImages.cpp (revision 9) |
+++ trunk/Chapter 02/addImages.cpp (nonexistent) |
@@ -1,120 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 2 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
- |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
- |
-int main() |
-{ |
- cv::Mat image1; |
- cv::Mat image2; |
- |
- image1= cv::imread("boldt.jpg"); |
- image2= cv::imread("rain.jpg"); |
- if (!image1.data) |
- return 0; |
- if (!image2.data) |
- return 0; |
- |
- cv::namedWindow("Image 1"); |
- cv::imshow("Image 1",image1); |
- cv::namedWindow("Image 2"); |
- cv::imshow("Image 2",image2); |
- |
- cv::Mat result; |
- cv::addWeighted(image1,0.7,image2,0.9,0.,result); |
- |
- cv::namedWindow("result"); |
- cv::imshow("result",result); |
- |
- // using overloaded operator |
- result= 0.7*image1+0.9*image2; |
- |
- cv::namedWindow("result with operators"); |
- cv::imshow("result with operators",result); |
- |
- image2= cv::imread("rain.jpg",0); |
- |
- // create vector of 3 images |
- std::vector<cv::Mat> planes; |
- // split 1 3-channel image into 3 1-channel images |
- cv::split(image1,planes); |
- // add to blue channel |
- planes[0]+= image2; |
- // merge the 3 1-channel images into 1 3-channel image |
- cv::merge(planes,result); |
- |
- cv::namedWindow("Result on blue channel"); |
- cv::imshow("Result on blue channel",result); |
- |
- // read images |
- cv::Mat image= cv::imread("boldt.jpg"); |
- cv::Mat logo= cv::imread("logo.bmp"); |
- |
- // define image ROI |
- cv::Mat imageROI; |
- imageROI= image(cv::Rect(385,270,logo.cols,logo.rows)); |
- |
- // add logo to image |
- cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI); |
- |
- // show result |
- cv::namedWindow("with logo"); |
- cv::imshow("with logo",image); |
- |
- // read images |
- image= cv::imread("boldt.jpg"); |
- logo= cv::imread("logo.bmp"); |
- |
- // define ROI |
- imageROI= image(cv::Rect(385,270,logo.cols,logo.rows)); |
- |
- // load the mask (must be gray-level) |
- cv::Mat mask= cv::imread("logo.bmp",0); |
- |
- // copy to ROI with mask |
- logo.copyTo(imageROI,mask); |
- |
- // show result |
- cv::namedWindow("with logo 2"); |
- cv::imshow("with logo 2",image); |
- |
- // read images |
- logo= cv::imread("logo.bmp",0); |
- image1= cv::imread("boldt.jpg"); |
- |
- // split 3-channel image into 3 1-channel images |
- std::vector<cv::Mat> channels; |
- cv::split(image1,channels); |
- |
- imageROI= channels.at(1); |
- |
- cv::addWeighted(imageROI(cv::Rect(385,270,logo.cols,logo.rows)),1.0, |
- logo,0.5,0.,imageROI(cv::Rect(385,270,logo.cols,logo.rows))); |
- |
- cv::merge(channels,image1); |
- |
- cv::namedWindow("with logo 3"); |
- cv::imshow("with logo 3",image1); |
- |
- cv::waitKey(); |
- |
- return 0; |
-} |
/trunk/Chapter 02/addImages.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/colorDetectController.h |
=================================================================== |
--- trunk/Chapter 03/colorDetectController.h (revision 9) |
+++ trunk/Chapter 03/colorDetectController.h (nonexistent) |
@@ -1,127 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined CD_CNTRLLR |
-#define CD_CNTRLLR |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include "colordetector.h" |
- |
-class ColorDetectController { |
- |
- private: |
- |
- static ColorDetectController *singleton; // pointer to the singleton |
- |
- ColorDetector *cdetect; |
- |
- // The image to be processed |
- cv::Mat image; |
- cv::Mat result; |
- |
- public: |
- ColorDetectController() { // private constructor |
- |
- //setting up the application |
- cdetect= new ColorDetector(); |
- } |
- |
- // Sets the color distance threshold |
- void setColorDistanceThreshold(int distance) { |
- |
- cdetect->setColorDistanceThreshold(distance); |
- } |
- |
- // Gets the color distance threshold |
- int getColorDistanceThreshold() const { |
- |
- return cdetect->getColorDistanceThreshold(); |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(unsigned char red, unsigned char green, unsigned char blue) { |
- |
- cdetect->setTargetColor(red,green,blue); |
- } |
- |
- // Gets the color to be detected |
- void getTargetColor(unsigned char &red, unsigned char &green, unsigned char &blue) const { |
- |
- cv::Vec3b color= cdetect->getTargetColor(); |
- |
- red= color[2]; |
- green= color[1]; |
- blue= color[0]; |
- } |
- |
- // Sets the input image. Reads it from file. |
- bool setInputImage(std::string filename) { |
- |
- image= cv::imread(filename); |
- |
- if (!image.data) |
- return false; |
- else |
- return true; |
- } |
- |
- // Returns the current input image. |
- const cv::Mat getInputImage() const { |
- |
- return image; |
- } |
- |
- // Performs image processing. |
- void process() { |
- |
- result= cdetect->process(image); |
- } |
- |
- |
- // Returns the image result from the latest processing. |
- const cv::Mat getLastResult() const { |
- |
- return result; |
- } |
- |
- // Deletes all processor objects created by the controller. |
- ~ColorDetectController() { |
- |
- delete cdetect; |
- } |
- |
- // Singleton static members |
- static ColorDetectController *getInstance() { |
- |
- if (singleton == 0) |
- singleton= new ColorDetectController; |
- |
- return singleton; |
- } |
- |
- // Releases the singleton instance of this controller. |
- static void destroy() { |
- |
- if (singleton != 0) { |
- delete singleton; |
- singleton= 0; |
- } |
- } |
-}; |
- |
-#endif |
/trunk/Chapter 03/colorDetectController.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/main.cpp |
=================================================================== |
--- trunk/Chapter 03/color_detector/main.cpp (revision 9) |
+++ trunk/Chapter 03/color_detector/main.cpp (nonexistent) |
@@ -1,27 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <QtGui/QApplication> |
-#include "mainwindow.h" |
- |
-int main(int argc, char *argv[]) |
-{ |
- QApplication a(argc, argv); |
- MainWindow w; |
- w.show(); |
- return a.exec(); |
-} |
/trunk/Chapter 03/color_detector/main.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/color_detector.pro |
=================================================================== |
--- trunk/Chapter 03/color_detector/color_detector.pro (revision 9) |
+++ trunk/Chapter 03/color_detector/color_detector.pro (nonexistent) |
@@ -1,21 +0,0 @@ |
-# ------------------------------------------------- |
-# Project created by QtCreator 2010-09-10T15:33:45 |
-# ------------------------------------------------- |
-TARGET = color_detector |
-TEMPLATE = app |
-SOURCES += main.cpp \ |
- mainwindow.cpp \ |
- colordetector.cpp \ |
- colordetector.cpp \ |
- colorDetectController.cpp |
-HEADERS += mainwindow.h \ |
- colordetector.h \ |
- colorDetectController.h |
-FORMS += mainwindow.ui |
-INCLUDEPATH += C:\OpenCV2.2\include\ |
-LIBS += -LC:\OpenCV2.2\lib \ |
- -lopencv_core220 \ |
- -lopencv_highgui220 \ |
- -lopencv_imgproc220 \ |
- -lopencv_features2d220 \ |
- -lopencv_calib3d220 |
Index: trunk/Chapter 03/color_detector/mainwindow.ui |
=================================================================== |
--- trunk/Chapter 03/color_detector/mainwindow.ui (revision 9) |
+++ trunk/Chapter 03/color_detector/mainwindow.ui (nonexistent) |
@@ -1,168 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8"?> |
-<ui version="4.0"> |
- <class>MainWindow</class> |
- <widget class="QMainWindow" name="MainWindow"> |
- <property name="geometry"> |
- <rect> |
- <x>0</x> |
- <y>0</y> |
- <width>600</width> |
- <height>394</height> |
- </rect> |
- </property> |
- <property name="windowTitle"> |
- <string>Color Detector (CIE Lab)</string> |
- </property> |
- <widget class="QWidget" name="centralWidget"> |
- <widget class="QPushButton" name="pushButton_openImage"> |
- <property name="geometry"> |
- <rect> |
- <x>10</x> |
- <y>10</y> |
- <width>81</width> |
- <height>23</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Open Image</string> |
- </property> |
- </widget> |
- <widget class="QPushButton" name="pushButton_color"> |
- <property name="geometry"> |
- <rect> |
- <x>10</x> |
- <y>40</y> |
- <width>81</width> |
- <height>23</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Select Color</string> |
- </property> |
- </widget> |
- <widget class="QPushButton" name="pushButton_process"> |
- <property name="geometry"> |
- <rect> |
- <x>10</x> |
- <y>320</y> |
- <width>81</width> |
- <height>23</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Process</string> |
- </property> |
- </widget> |
- <widget class="QLabel" name="label"> |
- <property name="geometry"> |
- <rect> |
- <x>100</x> |
- <y>10</y> |
- <width>491</width> |
- <height>331</height> |
- </rect> |
- </property> |
- <property name="frameShape"> |
- <enum>QFrame::Box</enum> |
- </property> |
- <property name="text"> |
- <string>Image</string> |
- </property> |
- </widget> |
- <widget class="QSlider" name="verticalSlider_Threshold"> |
- <property name="geometry"> |
- <rect> |
- <x>40</x> |
- <y>80</y> |
- <width>20</width> |
- <height>151</height> |
- </rect> |
- </property> |
- <property name="maximum"> |
- <number>442</number> |
- </property> |
- <property name="orientation"> |
- <enum>Qt::Vertical</enum> |
- </property> |
- </widget> |
- <widget class="QLabel" name="label_2"> |
- <property name="geometry"> |
- <rect> |
- <x>10</x> |
- <y>240</y> |
- <width>81</width> |
- <height>71</height> |
- </rect> |
- </property> |
- <property name="text"> |
- <string>Color Distance Threshold: 0</string> |
- </property> |
- <property name="wordWrap"> |
- <bool>true</bool> |
- </property> |
- </widget> |
- </widget> |
- <widget class="QMenuBar" name="menuBar"> |
- <property name="geometry"> |
- <rect> |
- <x>0</x> |
- <y>0</y> |
- <width>600</width> |
- <height>23</height> |
- </rect> |
- </property> |
- <widget class="QMenu" name="menuFile"> |
- <property name="title"> |
- <string>File</string> |
- </property> |
- <addaction name="actionOpen_Image"/> |
- <addaction name="actionChoose_Color"/> |
- <addaction name="actionProcess"/> |
- <addaction name="separator"/> |
- <addaction name="actionQuit"/> |
- </widget> |
- <addaction name="menuFile"/> |
- </widget> |
- <widget class="QStatusBar" name="statusBar"/> |
- <action name="actionOpen_Image"> |
- <property name="text"> |
- <string>Open Image</string> |
- </property> |
- </action> |
- <action name="actionChoose_Color"> |
- <property name="text"> |
- <string>Choose Color</string> |
- </property> |
- </action> |
- <action name="actionProcess"> |
- <property name="text"> |
- <string>Process</string> |
- </property> |
- </action> |
- <action name="actionQuit"> |
- <property name="text"> |
- <string>Quit</string> |
- </property> |
- </action> |
- </widget> |
- <layoutdefault spacing="6" margin="11"/> |
- <resources/> |
- <connections> |
- <connection> |
- <sender>actionQuit</sender> |
- <signal>triggered()</signal> |
- <receiver>MainWindow</receiver> |
- <slot>close()</slot> |
- <hints> |
- <hint type="sourcelabel"> |
- <x>-1</x> |
- <y>-1</y> |
- </hint> |
- <hint type="destinationlabel"> |
- <x>299</x> |
- <y>199</y> |
- </hint> |
- </hints> |
- </connection> |
- </connections> |
-</ui> |
Index: trunk/Chapter 03/color_detector/colordetector.cpp |
=================================================================== |
--- trunk/Chapter 03/color_detector/colordetector.cpp (revision 9) |
+++ trunk/Chapter 03/color_detector/colordetector.cpp (nonexistent) |
@@ -1,57 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include "colordetector.h" |
- |
-cv::Mat ColorDetector::process(const cv::Mat &image) { |
- |
- // re-allocate binary map if necessary |
- // same size as input image, but 1-channel |
- result.create(image.rows,image.cols,CV_8U); |
- |
- // re-allocate intermediate image if necessary |
- converted.create(image.rows,image.cols,image.type()); |
- |
- // Converting to Lab color space |
- cv::cvtColor(image, converted, CV_BGR2Lab); |
- |
- // get the iterators |
- cv::Mat_<cv::Vec3b>::iterator it= converted.begin<cv::Vec3b>(); |
- cv::Mat_<cv::Vec3b>::iterator itend= converted.end<cv::Vec3b>(); |
- cv::Mat_<uchar>::iterator itout= result.begin<uchar>(); |
- |
- // for each pixel |
- for ( ; it!= itend; ++it, ++itout) { |
- |
- // process each pixel --------------------- |
- |
- // compute distance from target color |
- if (getDistance(*it)<minDist) { |
- |
- *itout= 255; |
- |
- } else { |
- |
- *itout= 0; |
- } |
- |
- // end of pixel processing ---------------- |
- } |
- |
- return result; |
-} |
- |
/trunk/Chapter 03/color_detector/colordetector.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/colorDetectController.cpp |
=================================================================== |
--- trunk/Chapter 03/color_detector/colorDetectController.cpp (revision 9) |
+++ trunk/Chapter 03/color_detector/colorDetectController.cpp (nonexistent) |
@@ -1,20 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include "colorDetectController.h" |
- |
-ColorDetectController *ColorDetectController::singleton=0; |
/trunk/Chapter 03/color_detector/colorDetectController.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/mainwindow.cpp |
=================================================================== |
--- trunk/Chapter 03/color_detector/mainwindow.cpp (revision 9) |
+++ trunk/Chapter 03/color_detector/mainwindow.cpp (nonexistent) |
@@ -1,122 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include "mainwindow.h" |
-#include "ui_mainwindow.h" |
- |
-MainWindow::MainWindow(QWidget *parent) : |
- QMainWindow(parent), |
- ui(new Ui::MainWindow) |
-{ |
- ui->setupUi(this); |
- |
- //select color |
- connect(ui->pushButton_color, SIGNAL(clicked()), this, SLOT(setColor())); |
- connect(ui->actionChoose_Color, SIGNAL(triggered()), this, SLOT(setColor())); |
- |
- //open image |
- connect(ui->pushButton_openImage, SIGNAL(clicked()), this, SLOT(setImage())); |
- connect(ui->actionOpen_Image, SIGNAL(triggered()), this, SLOT(setImage())); |
- |
- //process Color Detection |
- connect(ui->pushButton_process, SIGNAL(clicked()), this, SLOT(processColorDetection())); |
- connect(ui->actionProcess, SIGNAL(triggered()), this, SLOT(processColorDetection())); |
- |
-} |
- |
-MainWindow::~MainWindow() |
-{ |
- delete ui; |
-} |
- |
-void MainWindow::changeEvent(QEvent *e) |
-{ |
- QMainWindow::changeEvent(e); |
- switch (e->type()) { |
- case QEvent::LanguageChange: |
- ui->retranslateUi(this); |
- break; |
- default: |
- break; |
- } |
-} |
- |
-void MainWindow::setImage() |
-{ |
- QFileDialog::Options options; |
- QString selectedFilter; |
- QString fileName = QFileDialog::getOpenFileName(this, |
- tr("Open Image Files"), |
- "", |
- tr("Image files (*.jpg *.jpeg *.png *.gif *.bmp)"), |
- &selectedFilter, |
- options); |
- if (!fileName.isEmpty()){ |
- cv::Mat img_mat = cv::imread(fileName.toStdString(),1); //0 for grayscale |
- displayMat(img_mat); |
- } |
- //Set Filename |
- ColorDetectController::getInstance()->setInputImage(fileName.toStdString()); |
-} |
- |
-//Convert cv::Mat to QImage and display |
-void MainWindow::displayMat(const cv::Mat& image){ |
- |
- //BGR openCV Mat to QImage |
- QImage img_qt = QImage((const unsigned char*)image.data,image.cols, image.rows, image.step, QImage::Format_RGB888); |
- |
- //For Binary Images |
- if (img_qt.isNull()){ |
- //ColorTable for Binary Images |
- QVector<QRgb> colorTable; |
- for (int i = 0; i < 256; i++) |
- colorTable.push_back(qRgb(i, i, i)); |
- |
- img_qt = QImage((const unsigned char*)image.data,image.cols, image.rows, QImage::Format_Indexed8); |
- img_qt.setColorTable(colorTable); |
- } |
- |
- //Display the QImage in the Label |
- QPixmap img_pix = QPixmap::fromImage(img_qt.rgbSwapped()); //BGR to RGB |
- this->ui->label->setPixmap(img_pix.scaled(ui->label->size(), Qt::KeepAspectRatio)); |
-} |
- |
-void MainWindow::on_verticalSlider_Threshold_valueChanged(int value) |
-{ |
- QString cdt("Color Distance Threshold: "); |
- cdt.append(QString::number(value)); |
- this->ui->label_2->setText(cdt); |
-} |
- |
-void MainWindow::setColor() |
-{ |
- QColor color = QColorDialog::getColor(Qt::green, this); |
- if (color.isValid()) { |
- ColorDetectController::getInstance()->setTargetColor(color.red(),color.green(),color.blue()); |
- } |
-} |
- |
-void MainWindow::processColorDetection() |
-{ |
- ColorDetectController::getInstance()->setColorDistanceThreshold(ui->verticalSlider_Threshold->value()); |
- ColorDetectController::getInstance()->process(); |
- |
- cv::Mat resulting = ColorDetectController::getInstance()->getLastResult(); |
- if (!resulting.empty()) |
- displayMat(resulting); |
- |
-} |
/trunk/Chapter 03/color_detector/mainwindow.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/Makefile |
=================================================================== |
--- trunk/Chapter 03/color_detector/Makefile (revision 9) |
+++ trunk/Chapter 03/color_detector/Makefile (nonexistent) |
@@ -1,153 +0,0 @@ |
-############################################################################# |
-# Makefile for building: color_detector |
-# Generated by qmake (2.01a) (Qt 4.6.3) on: Tue Sep 21 18:30:06 2010 |
-# Project: color_detector.pro |
-# Template: app |
-# Command: c:\Qt\4.6.3\bin\qmake.exe -spec c:\Qt\4.6.3\mkspecs\win32-msvc2008 -win32 CONFIG+=release -o Makefile color_detector.pro |
-############################################################################# |
- |
-first: release |
-install: release-install |
-uninstall: release-uninstall |
-MAKEFILE = Makefile |
-QMAKE = c:\Qt\4.6.3\bin\qmake.exe |
-DEL_FILE = del |
-CHK_DIR_EXISTS= if not exist |
-MKDIR = mkdir |
-COPY = copy /y |
-COPY_FILE = $(COPY) |
-COPY_DIR = xcopy /s /q /y /i |
-INSTALL_FILE = $(COPY_FILE) |
-INSTALL_PROGRAM = $(COPY_FILE) |
-INSTALL_DIR = $(COPY_DIR) |
-DEL_FILE = del |
-SYMLINK = |
-DEL_DIR = rmdir |
-MOVE = move |
-CHK_DIR_EXISTS= if not exist |
-MKDIR = mkdir |
-SUBTARGETS = \ |
- release \ |
- debug |
- |
-release: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release |
-release-make_default: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release |
-release-make_first: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release first |
-release-all: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release all |
-release-clean: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release clean |
-release-distclean: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release distclean |
-release-install: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release install |
-release-uninstall: $(MAKEFILE).Release FORCE |
- $(MAKE) -f $(MAKEFILE).Release uninstall |
-debug: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug |
-debug-make_default: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug |
-debug-make_first: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug first |
-debug-all: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug all |
-debug-clean: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug clean |
-debug-distclean: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug distclean |
-debug-install: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug install |
-debug-uninstall: $(MAKEFILE).Debug FORCE |
- $(MAKE) -f $(MAKEFILE).Debug uninstall |
- |
-Makefile: color_detector.pro c:\Qt\4.6.3\mkspecs\win32-msvc2008\qmake.conf c:\Qt\4.6.3\mkspecs\qconfig.pri \ |
- c:\Qt\4.6.3\mkspecs\features\qt_functions.prf \ |
- c:\Qt\4.6.3\mkspecs\features\qt_config.prf \ |
- c:\Qt\4.6.3\mkspecs\features\exclusive_builds.prf \ |
- c:\Qt\4.6.3\mkspecs\features\default_pre.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\default_pre.prf \ |
- c:\Qt\4.6.3\mkspecs\features\release.prf \ |
- c:\Qt\4.6.3\mkspecs\features\debug_and_release.prf \ |
- c:\Qt\4.6.3\mkspecs\features\default_post.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\default_post.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\rtti.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\exceptions.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\stl.prf \ |
- c:\Qt\4.6.3\mkspecs\features\shared.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\embed_manifest_exe.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\embed_manifest_dll.prf \ |
- c:\Qt\4.6.3\mkspecs\features\warn_on.prf \ |
- c:\Qt\4.6.3\mkspecs\features\qt.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\thread.prf \ |
- c:\Qt\4.6.3\mkspecs\features\moc.prf \ |
- c:\Qt\4.6.3\mkspecs\features\win32\windows.prf \ |
- c:\Qt\4.6.3\mkspecs\features\resources.prf \ |
- c:\Qt\4.6.3\mkspecs\features\uic.prf \ |
- c:\Qt\4.6.3\mkspecs\features\yacc.prf \ |
- c:\Qt\4.6.3\mkspecs\features\lex.prf \ |
- c:\Qt\4.6.3\mkspecs\features\incredibuild_xge.prf \ |
- c:\Qt\4.6.3\mkspecs\features\include_source_dir.prf \ |
- c:\Qt\4.6.3\lib\qtmain.prl |
- $(QMAKE) -spec c:\Qt\4.6.3\mkspecs\win32-msvc2008 -win32 CONFIG+=release -o Makefile color_detector.pro |
-c:\Qt\4.6.3\mkspecs\qconfig.pri: |
-c:\Qt\4.6.3\mkspecs\features\qt_functions.prf: |
-c:\Qt\4.6.3\mkspecs\features\qt_config.prf: |
-c:\Qt\4.6.3\mkspecs\features\exclusive_builds.prf: |
-c:\Qt\4.6.3\mkspecs\features\default_pre.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\default_pre.prf: |
-c:\Qt\4.6.3\mkspecs\features\release.prf: |
-c:\Qt\4.6.3\mkspecs\features\debug_and_release.prf: |
-c:\Qt\4.6.3\mkspecs\features\default_post.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\default_post.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\rtti.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\exceptions.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\stl.prf: |
-c:\Qt\4.6.3\mkspecs\features\shared.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\embed_manifest_exe.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\embed_manifest_dll.prf: |
-c:\Qt\4.6.3\mkspecs\features\warn_on.prf: |
-c:\Qt\4.6.3\mkspecs\features\qt.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\thread.prf: |
-c:\Qt\4.6.3\mkspecs\features\moc.prf: |
-c:\Qt\4.6.3\mkspecs\features\win32\windows.prf: |
-c:\Qt\4.6.3\mkspecs\features\resources.prf: |
-c:\Qt\4.6.3\mkspecs\features\uic.prf: |
-c:\Qt\4.6.3\mkspecs\features\yacc.prf: |
-c:\Qt\4.6.3\mkspecs\features\lex.prf: |
-c:\Qt\4.6.3\mkspecs\features\incredibuild_xge.prf: |
-c:\Qt\4.6.3\mkspecs\features\include_source_dir.prf: |
-c:\Qt\4.6.3\lib\qtmain.prl: |
-qmake: qmake_all FORCE |
- @$(QMAKE) -spec c:\Qt\4.6.3\mkspecs\win32-msvc2008 -win32 CONFIG+=release -o Makefile color_detector.pro |
- |
-qmake_all: FORCE |
- |
-make_default: release-make_default debug-make_default FORCE |
-make_first: release-make_first debug-make_first FORCE |
-all: release-all debug-all FORCE |
-clean: release-clean debug-clean FORCE |
- -$(DEL_FILE) ".\color_detector.intermediate.manifest" |
- -$(DEL_FILE) color_detector.exp |
-distclean: release-distclean debug-distclean FORCE |
- -$(DEL_FILE) Makefile |
- |
-check: first |
- |
-release-mocclean: $(MAKEFILE).Release |
- $(MAKE) -f $(MAKEFILE).Release mocclean |
-debug-mocclean: $(MAKEFILE).Debug |
- $(MAKE) -f $(MAKEFILE).Debug mocclean |
-mocclean: release-mocclean debug-mocclean |
- |
-release-mocables: $(MAKEFILE).Release |
- $(MAKE) -f $(MAKEFILE).Release mocables |
-debug-mocables: $(MAKEFILE).Debug |
- $(MAKE) -f $(MAKEFILE).Debug mocables |
-mocables: release-mocables debug-mocables |
-FORCE: |
- |
-$(MAKEFILE).Release: Makefile |
-$(MAKEFILE).Debug: Makefile |
Index: trunk/Chapter 03/color_detector/colordetector.h |
=================================================================== |
--- trunk/Chapter 03/color_detector/colordetector.h (revision 9) |
+++ trunk/Chapter 03/color_detector/colordetector.h (nonexistent) |
@@ -1,113 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined COLORDETECT |
-#define COLORDETECT |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class ColorDetector { |
- |
- private: |
- |
- // minimum acceptable distance |
- int minDist; |
- |
- // target color |
- cv::Vec3b target; |
- |
- // image containing resulting binary map |
- cv::Mat result; |
- |
- // image containing color converted image |
- cv::Mat converted; |
- |
- // inline private member function |
- // Computes the distance from target color. |
- int getDistance(const cv::Vec3b& color) const { |
- // return static_cast<int>(cv::norm<int,3>(cv::Vec3i(color[0]-target[0],color[1]-target[1],color[2]-target[2]))); |
- return abs(color[0]-target[0])+ |
- abs(color[1]-target[1])+ |
- abs(color[2]-target[2]); |
- } |
- |
- public: |
- |
- // empty constructor |
- ColorDetector() : minDist(100) { |
- |
- // default parameter initialization here |
- target[0]= target[1]= target[2]= 0; |
- } |
- |
- // Getters and setters |
- |
- // Sets the color distance threshold. |
- // Threshold must be positive, otherwise distance threshold |
- // is set to 0. |
- void setColorDistanceThreshold(int distance) { |
- |
- if (distance<0) |
- distance=0; |
- minDist= distance; |
- } |
- |
- // Gets the color distance threshold |
- int getColorDistanceThreshold() const { |
- |
- return minDist; |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(unsigned char red, unsigned char green, unsigned char blue) { |
- |
- cv::Mat tmp(1,1,CV_8UC3); |
- tmp.at<cv::Vec3b>(0,0)[0]= blue; |
- tmp.at<cv::Vec3b>(0,0)[1]= green; |
- tmp.at<cv::Vec3b>(0,0)[2]= red; |
- |
- // Converting the target to Lab color space |
- cv::cvtColor(tmp, tmp, CV_BGR2Lab); |
- |
- target= tmp.at<cv::Vec3b>(0,0); |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(cv::Vec3b color) { |
- |
- cv::Mat tmp(1,1,CV_8UC3); |
- tmp.at<cv::Vec3b>(0,0)= color; |
- |
- // Converting the target to Lab color space |
- cv::cvtColor(tmp, tmp, CV_BGR2Lab); |
- |
- target= tmp.at<cv::Vec3b>(0,0); |
- } |
- |
- // Gets the color to be detected |
- cv::Vec3b getTargetColor() const { |
- |
- return target; |
- } |
- |
- // Processes the image. Returns a 1-channel binary image. |
- cv::Mat process(const cv::Mat &image); |
-}; |
- |
- |
-#endif |
/trunk/Chapter 03/color_detector/colordetector.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/ui_mainwindow.h |
=================================================================== |
--- trunk/Chapter 03/color_detector/ui_mainwindow.h (revision 9) |
+++ trunk/Chapter 03/color_detector/ui_mainwindow.h (nonexistent) |
@@ -1,131 +0,0 @@ |
-/******************************************************************************** |
-** Form generated from reading UI file 'mainwindow.ui' |
-** |
-** Created: Tue Sep 21 18:32:00 2010 |
-** by: Qt User Interface Compiler version 4.6.3 |
-** |
-** WARNING! All changes made in this file will be lost when recompiling UI file! |
-********************************************************************************/ |
- |
-#ifndef UI_MAINWINDOW_H |
-#define UI_MAINWINDOW_H |
- |
-#include <QtCore/QVariant> |
-#include <QtGui/QAction> |
-#include <QtGui/QApplication> |
-#include <QtGui/QButtonGroup> |
-#include <QtGui/QHeaderView> |
-#include <QtGui/QLabel> |
-#include <QtGui/QMainWindow> |
-#include <QtGui/QMenu> |
-#include <QtGui/QMenuBar> |
-#include <QtGui/QPushButton> |
-#include <QtGui/QSlider> |
-#include <QtGui/QStatusBar> |
-#include <QtGui/QWidget> |
- |
-QT_BEGIN_NAMESPACE |
- |
-class Ui_MainWindow |
-{ |
-public: |
- QAction *actionOpen_Image; |
- QAction *actionChoose_Color; |
- QAction *actionProcess; |
- QAction *actionQuit; |
- QWidget *centralWidget; |
- QPushButton *pushButton_openImage; |
- QPushButton *pushButton_color; |
- QPushButton *pushButton_process; |
- QLabel *label; |
- QSlider *verticalSlider_Threshold; |
- QLabel *label_2; |
- QMenuBar *menuBar; |
- QMenu *menuFile; |
- QStatusBar *statusBar; |
- |
- void setupUi(QMainWindow *MainWindow) |
- { |
- if (MainWindow->objectName().isEmpty()) |
- MainWindow->setObjectName(QString::fromUtf8("MainWindow")); |
- MainWindow->resize(600, 394); |
- actionOpen_Image = new QAction(MainWindow); |
- actionOpen_Image->setObjectName(QString::fromUtf8("actionOpen_Image")); |
- actionChoose_Color = new QAction(MainWindow); |
- actionChoose_Color->setObjectName(QString::fromUtf8("actionChoose_Color")); |
- actionProcess = new QAction(MainWindow); |
- actionProcess->setObjectName(QString::fromUtf8("actionProcess")); |
- actionQuit = new QAction(MainWindow); |
- actionQuit->setObjectName(QString::fromUtf8("actionQuit")); |
- centralWidget = new QWidget(MainWindow); |
- centralWidget->setObjectName(QString::fromUtf8("centralWidget")); |
- pushButton_openImage = new QPushButton(centralWidget); |
- pushButton_openImage->setObjectName(QString::fromUtf8("pushButton_openImage")); |
- pushButton_openImage->setGeometry(QRect(10, 10, 81, 23)); |
- pushButton_color = new QPushButton(centralWidget); |
- pushButton_color->setObjectName(QString::fromUtf8("pushButton_color")); |
- pushButton_color->setGeometry(QRect(10, 40, 81, 23)); |
- pushButton_process = new QPushButton(centralWidget); |
- pushButton_process->setObjectName(QString::fromUtf8("pushButton_process")); |
- pushButton_process->setGeometry(QRect(10, 320, 81, 23)); |
- label = new QLabel(centralWidget); |
- label->setObjectName(QString::fromUtf8("label")); |
- label->setGeometry(QRect(100, 10, 491, 331)); |
- label->setFrameShape(QFrame::Box); |
- verticalSlider_Threshold = new QSlider(centralWidget); |
- verticalSlider_Threshold->setObjectName(QString::fromUtf8("verticalSlider_Threshold")); |
- verticalSlider_Threshold->setGeometry(QRect(40, 80, 20, 151)); |
- verticalSlider_Threshold->setMaximum(442); |
- verticalSlider_Threshold->setOrientation(Qt::Vertical); |
- label_2 = new QLabel(centralWidget); |
- label_2->setObjectName(QString::fromUtf8("label_2")); |
- label_2->setGeometry(QRect(10, 240, 81, 71)); |
- label_2->setWordWrap(true); |
- MainWindow->setCentralWidget(centralWidget); |
- menuBar = new QMenuBar(MainWindow); |
- menuBar->setObjectName(QString::fromUtf8("menuBar")); |
- menuBar->setGeometry(QRect(0, 0, 600, 23)); |
- menuFile = new QMenu(menuBar); |
- menuFile->setObjectName(QString::fromUtf8("menuFile")); |
- MainWindow->setMenuBar(menuBar); |
- statusBar = new QStatusBar(MainWindow); |
- statusBar->setObjectName(QString::fromUtf8("statusBar")); |
- MainWindow->setStatusBar(statusBar); |
- |
- menuBar->addAction(menuFile->menuAction()); |
- menuFile->addAction(actionOpen_Image); |
- menuFile->addAction(actionChoose_Color); |
- menuFile->addAction(actionProcess); |
- menuFile->addSeparator(); |
- menuFile->addAction(actionQuit); |
- |
- retranslateUi(MainWindow); |
- QObject::connect(actionQuit, SIGNAL(triggered()), MainWindow, SLOT(close())); |
- |
- QMetaObject::connectSlotsByName(MainWindow); |
- } // setupUi |
- |
- void retranslateUi(QMainWindow *MainWindow) |
- { |
- MainWindow->setWindowTitle(QApplication::translate("MainWindow", "Color Detector (CIE Lab)", 0, QApplication::UnicodeUTF8)); |
- actionOpen_Image->setText(QApplication::translate("MainWindow", "Open Image", 0, QApplication::UnicodeUTF8)); |
- actionChoose_Color->setText(QApplication::translate("MainWindow", "Choose Color", 0, QApplication::UnicodeUTF8)); |
- actionProcess->setText(QApplication::translate("MainWindow", "Process", 0, QApplication::UnicodeUTF8)); |
- actionQuit->setText(QApplication::translate("MainWindow", "Quit", 0, QApplication::UnicodeUTF8)); |
- pushButton_openImage->setText(QApplication::translate("MainWindow", "Open Image", 0, QApplication::UnicodeUTF8)); |
- pushButton_color->setText(QApplication::translate("MainWindow", "Select Color", 0, QApplication::UnicodeUTF8)); |
- pushButton_process->setText(QApplication::translate("MainWindow", "Process", 0, QApplication::UnicodeUTF8)); |
- label->setText(QApplication::translate("MainWindow", "Image", 0, QApplication::UnicodeUTF8)); |
- label_2->setText(QApplication::translate("MainWindow", "Color Distance Threshold: 0", 0, QApplication::UnicodeUTF8)); |
- menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8)); |
- } // retranslateUi |
- |
-}; |
- |
-namespace Ui { |
- class MainWindow: public Ui_MainWindow {}; |
-} // namespace Ui |
- |
-QT_END_NAMESPACE |
- |
-#endif // UI_MAINWINDOW_H |
/trunk/Chapter 03/color_detector/ui_mainwindow.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/colorDetectController.h |
=================================================================== |
--- trunk/Chapter 03/color_detector/colorDetectController.h (revision 9) |
+++ trunk/Chapter 03/color_detector/colorDetectController.h (nonexistent) |
@@ -1,110 +0,0 @@ |
-#if !defined CD_CNTRLLR |
-#define CD_CNTRLLR |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include "colordetector.h" |
- |
-class ColorDetectController { |
- |
- private: |
- |
- static ColorDetectController *singleton; // pointer to the singleton |
- |
- ColorDetector *cdetect; |
- |
- // The image to be processed |
- cv::Mat image; |
- cv::Mat result; |
- |
- public: |
- ColorDetectController() { // private constructor |
- |
- //setting up the application |
- cdetect= new ColorDetector(); |
- } |
- |
- // Sets the color distance threshold |
- void setColorDistanceThreshold(int distance) { |
- |
- cdetect->setColorDistanceThreshold(distance); |
- } |
- |
- // Gets the color distance threshold |
- int getColorDistanceThreshold() const { |
- |
- return cdetect->getColorDistanceThreshold(); |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(unsigned char red, unsigned char green, unsigned char blue) { |
- |
- cdetect->setTargetColor(red,green,blue); |
- } |
- |
- // Gets the color to be detected |
- void getTargetColor(unsigned char &red, unsigned char &green, unsigned char &blue) const { |
- |
- cv::Vec3b color= cdetect->getTargetColor(); |
- |
- red= color[2]; |
- green= color[1]; |
- blue= color[0]; |
- } |
- |
- // Sets the input image. Reads it from file. |
- bool setInputImage(std::string filename) { |
- |
- image= cv::imread(filename); |
- |
- if (!image.data) |
- return false; |
- else |
- return true; |
- } |
- |
- // Returns the current input image. |
- const cv::Mat getInputImage() const { |
- |
- return image; |
- } |
- |
- // Performs image processing. |
- void process() { |
- |
- result= cdetect->process(image); |
- } |
- |
- |
- // Returns the image result from the latest processing. |
- const cv::Mat getLastResult() const { |
- |
- return result; |
- } |
- |
- // Deletes all processor objects created by the controller. |
- ~ColorDetectController() { |
- |
- delete cdetect; |
- } |
- |
- // Singleton static members |
- static ColorDetectController *getInstance() { |
- |
- if (singleton == 0) |
- singleton= new ColorDetectController; |
- |
- return singleton; |
- } |
- |
- // Releases the singleton instance of this controller. |
- static void destroy() { |
- |
- if (singleton != 0) { |
- delete singleton; |
- singleton= 0; |
- } |
- } |
-}; |
- |
-#endif |
/trunk/Chapter 03/color_detector/colorDetectController.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/color_detector/mainwindow.h |
=================================================================== |
--- trunk/Chapter 03/color_detector/mainwindow.h (revision 9) |
+++ trunk/Chapter 03/color_detector/mainwindow.h (nonexistent) |
@@ -1,64 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#ifndef MAINWINDOW_H |
-#define MAINWINDOW_H |
- |
-#include <QMainWindow> |
-#include <QFileDialog> |
-#include <QColorDialog> |
- |
-//OpenCV |
-#include <opencv/cv.h> |
-#include <opencv/highgui.h> |
- |
-//color detector, controller |
-#include "colorDetectController.h" |
-#include "colordetector.h" |
- |
-namespace Ui { |
- class MainWindow; |
-} |
- |
-class MainWindow : public QMainWindow { |
- Q_OBJECT |
-public: |
- MainWindow(QWidget *parent = 0); |
- ~MainWindow(); |
- |
-protected: |
- void changeEvent(QEvent *e); |
- void displayMat(const cv::Mat& img); |
- |
- //Main Image |
- //cv::Mat img_mat; |
- |
-private: |
- Ui::MainWindow *ui; |
- |
-private slots: |
- void on_pushButton_color_clicked(); |
- void processColorDetection(); |
- void on_verticalSlider_Threshold_valueChanged(int value); |
- |
- void setColor(); |
- void setImage(); |
- |
- |
-}; |
- |
-#endif // MAINWINDOW_H |
/trunk/Chapter 03/color_detector/mainwindow.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/colordetectorLab.cpp |
=================================================================== |
--- trunk/Chapter 03/colordetectorLab.cpp (revision 9) |
+++ trunk/Chapter 03/colordetectorLab.cpp (nonexistent) |
@@ -1,58 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include "color_detector/colordetector.h" |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-cv::Mat ColorDetector::process(const cv::Mat &image) { |
- |
- // re-allocate binary map if necessary |
- // same size as input image, but 1-channel |
- result.create(image.rows,image.cols,CV_8U); |
- |
- // re-allocate intermediate image if necessary |
- converted.create(image.rows,image.cols,image.type()); |
- |
- // Converting to Lab color space |
- cv::cvtColor(image, converted, CV_BGR2Lab); |
- |
- // get the iterators |
- cv::Mat_<cv::Vec3b>::iterator it= converted.begin<cv::Vec3b>(); |
- cv::Mat_<cv::Vec3b>::iterator itend= converted.end<cv::Vec3b>(); |
- cv::Mat_<uchar>::iterator itout= result.begin<uchar>(); |
- |
- // for each pixel |
- for ( ; it!= itend; ++it, ++itout) { |
- |
- // process each pixel --------------------- |
- |
- // compute distance from target color |
- if (getDistance(*it)<minDist) { |
- |
- *itout= 255; |
- |
- } else { |
- |
- *itout= 0; |
- } |
- |
- // end of pixel processing ---------------- |
- } |
- |
- return result; |
-} |
- |
/trunk/Chapter 03/colordetectorLab.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/colordetector.cpp |
=================================================================== |
--- trunk/Chapter 03/colordetector.cpp (revision 9) |
+++ trunk/Chapter 03/colordetector.cpp (nonexistent) |
@@ -1,51 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include "colordetector.h" |
- |
-cv::Mat ColorDetector::process(const cv::Mat &image) { |
- |
- // re-allocate binary map if necessary |
- // same size as input image, but 1-channel |
- result.create(image.rows,image.cols,CV_8U); |
- |
- // get the iterators |
- cv::Mat_<cv::Vec3b>::const_iterator it= image.begin<cv::Vec3b>(); |
- cv::Mat_<cv::Vec3b>::const_iterator itend= image.end<cv::Vec3b>(); |
- cv::Mat_<uchar>::iterator itout= result.begin<uchar>(); |
- |
- // for each pixel |
- for ( ; it!= itend; ++it, ++itout) { |
- |
- // process each pixel --------------------- |
- |
- // compute distance from target color |
- if (getDistance(*it)<minDist) { |
- |
- *itout= 255; |
- |
- } else { |
- |
- *itout= 0; |
- } |
- |
- // end of pixel processing ---------------- |
- } |
- |
- return result; |
-} |
- |
/trunk/Chapter 03/colordetector.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/README.txt |
=================================================================== |
--- trunk/Chapter 03/README.txt (revision 9) |
+++ trunk/Chapter 03/README.txt (nonexistent) |
@@ -1,23 +0,0 @@ |
-This directory contains material supporting chapter 3 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-Files: |
- colorDetection.h |
- colorDetection.cpp |
- colordetector.cpp |
-correspond to Recipe: |
-Using the Strategy Pattern in Algorithm Design |
- |
-Files: |
- colorDetectContoller.h |
- colorDetectContoller.cpp |
-correspond to Recipes: |
-Using the Controller Pattern to Communicate with Processing Modules |
-Using the Singleton Design Pattern |
- |
-Directory: |
- color_detector |
-correspond to Recipes: |
-Using the Model-View-Controller Pattern to Design an Application |
-Converting Color Spaces |
/trunk/Chapter 03/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/colorDetectController.cpp |
=================================================================== |
--- trunk/Chapter 03/colorDetectController.cpp (revision 9) |
+++ trunk/Chapter 03/colorDetectController.cpp (nonexistent) |
@@ -1,20 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include "colorDetectController.h" |
- |
-ColorDetectController *ColorDetectController::singleton=0; |
/trunk/Chapter 03/colorDetectController.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/colordetectorLab.h |
=================================================================== |
--- trunk/Chapter 03/colordetectorLab.h (revision 9) |
+++ trunk/Chapter 03/colordetectorLab.h (nonexistent) |
@@ -1,112 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined COLORDETECT |
-#define COLORDETECT |
- |
-#include <opencv2/core/core.hpp> |
- |
-class ColorDetector { |
- |
- private: |
- |
- // minimum acceptable distance |
- int minDist; |
- |
- // target color |
- cv::Vec3b target; |
- |
- // image containing resulting binary map |
- cv::Mat result; |
- |
- // image containing color converted image |
- cv::Mat converted; |
- |
- // inline private member function |
- // Computes the distance from target color. |
- int getDistance(const cv::Vec3b& color) const { |
- // return static_cast<int>(cv::norm<int,3>(cv::Vec3i(color[0]-target[0],color[1]-target[1],color[2]-target[2]))); |
- return abs(color[0]-target[0])+ |
- abs(color[1]-target[1])+ |
- abs(color[2]-target[2]); |
- } |
- |
- public: |
- |
- // empty constructor |
- ColorDetector() : minDist(100) { |
- |
- // default parameter initialization here |
- target[0]= target[1]= target[2]= 0; |
- } |
- |
- // Getters and setters |
- |
- // Sets the color distance threshold. |
- // Threshold must be positive, otherwise distance threshold |
- // is set to 0. |
- void setColorDistanceThreshold(int distance) { |
- |
- if (distance<0) |
- distance=0; |
- minDist= distance; |
- } |
- |
- // Gets the color distance threshold |
- int getColorDistanceThreshold() const { |
- |
- return minDist; |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(unsigned char red, unsigned char green, unsigned char blue) { |
- |
- cv::Mat tmp(1,1,CV_8UC3); |
- tmp.at<cv::Vec3b>(0,0)[0]= blue; |
- tmp.at<cv::Vec3b>(0,0)[1]= green; |
- tmp.at<cv::Vec3b>(0,0)[2]= red; |
- |
- // Converting the target to Lab color space |
- cv::cvtColor(tmp, tmp, CV_BGR2Lab); |
- |
- target= tmp.at<cv::Vec3b>(0,0); |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(cv::Vec3b color) { |
- |
- cv::Mat tmp(1,1,CV_8UC3); |
- tmp.at<cv::Vec3b>(0,0)= color; |
- |
- // Converting the target to Lab color space |
- cv::cvtColor(tmp, tmp, CV_BGR2Lab); |
- |
- target= tmp.at<cv::Vec3b>(0,0); |
- } |
- |
- // Gets the color to be detected |
- cv::Vec3b getTargetColor() const { |
- |
- return target; |
- } |
- |
- // Processes the image. Returns a 1-channel binary image. |
- cv::Mat process(const cv::Mat &image); |
-}; |
- |
- |
-#endif |
/trunk/Chapter 03/colordetectorLab.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/colorDetection.cpp |
=================================================================== |
--- trunk/Chapter 03/colorDetection.cpp (revision 9) |
+++ trunk/Chapter 03/colorDetection.cpp (nonexistent) |
@@ -1,44 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-#include "colordetector.h" |
- |
-int main() |
-{ |
- // Create image processor object |
- ColorDetector cdetect; |
- |
- // Read input image |
- cv::Mat image= cv::imread("boldt.jpg"); |
- if (!image.data) |
- return 0; |
- |
- // set input parameters |
- cdetect.setTargetColor(130,190,230); // here blue sky |
- |
- // Read image, process it and display the result |
- cv::namedWindow("result"); |
- cv::imshow("result",cdetect.process(image)); |
- |
- cv::waitKey(); |
- |
- return 0; |
-} |
- |
/trunk/Chapter 03/colorDetection.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 03/colordetector.h |
=================================================================== |
--- trunk/Chapter 03/colordetector.h (revision 9) |
+++ trunk/Chapter 03/colordetector.h (nonexistent) |
@@ -1,97 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 3 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined COLORDETECT |
-#define COLORDETECT |
- |
-#include <opencv2/core/core.hpp> |
- |
-class ColorDetector { |
- |
- private: |
- |
- // minimum acceptable distance |
- int minDist; |
- |
- // target color |
- cv::Vec3b target; |
- |
- // image containing resulting binary map |
- cv::Mat result; |
- |
- // inline private member function |
- // Computes the distance from target color. |
- int getDistance(const cv::Vec3b& color) const { |
- // return static_cast<int>(cv::norm<int,3>(cv::Vec3i(color[0]-target[0],color[1]-target[1],color[2]-target[2]))); |
- return abs(color[0]-target[0])+ |
- abs(color[1]-target[1])+ |
- abs(color[2]-target[2]); |
- } |
- |
- public: |
- |
- // empty constructor |
- ColorDetector() : minDist(100) { |
- |
- // default parameter initialization here |
- target[0]= target[1]= target[2]= 0; |
- } |
- |
- // Getters and setters |
- |
- // Sets the color distance threshold. |
- // Threshold must be positive, otherwise distance threshold |
- // is set to 0. |
- void setColorDistanceThreshold(int distance) { |
- |
- if (distance<0) |
- distance=0; |
- minDist= distance; |
- } |
- |
- // Gets the color distance threshold |
- int getColorDistanceThreshold() const { |
- |
- return minDist; |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(unsigned char red, unsigned char green, unsigned char blue) { |
- |
- target[2]= red; |
- target[1]= green; |
- target[0]= blue; |
- } |
- |
- // Sets the color to be detected |
- void setTargetColor(cv::Vec3b color) { |
- |
- target= color; |
- } |
- |
- // Gets the color to be detected |
- cv::Vec3b getTargetColor() const { |
- |
- return target; |
- } |
- |
- // Processes the image. Returns a 1-channel binary image. |
- cv::Mat process(const cv::Mat &image); |
-}; |
- |
- |
-#endif |
/trunk/Chapter 03/colordetector.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/objectfinder.cpp |
=================================================================== |
--- trunk/Chapter 04/objectfinder.cpp (revision 9) |
+++ trunk/Chapter 04/objectfinder.cpp (nonexistent) |
@@ -1,186 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 4 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-using namespace std; |
- |
-#include <opencv/cv.h> |
-#include <opencv/highgui.h> |
- |
-#include "histogram.h" |
-#include "objectFinder.h" |
-#include "colorhistogram.h" |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../waves.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- // define image ROI |
- cv::Mat imageROI; |
- imageROI= image(cv::Rect(360,55,40,50)); // Cloud region |
- |
- // Display reference patch |
- cv::namedWindow("Reference"); |
- cv::imshow("Reference",imageROI); |
- |
- // Find histogram of reference |
- Histogram1D h; |
- cv::MatND hist= h.getHistogram(imageROI); |
- cv::namedWindow("Reference Hist"); |
- cv::imshow("Reference Hist",h.getHistogramImage(imageROI)); |
- |
- // Create the objectfinder |
- ObjectFinder finder; |
- finder.setHistogram(hist); |
- |
- finder.setThreshold(-1.0f); |
- |
- // Get back-projection |
- cv::Mat result1; |
- result1= finder.find(image); |
- |
- // Create negative image and display result |
- cv::Mat tmp; |
- result1.convertTo(tmp,CV_8U,-1.0,255.0); |
- cv::namedWindow("Backprojection result"); |
- cv::imshow("Backprojection result",tmp); |
- |
- // Get binary back-projection |
- finder.setThreshold(0.12f); |
- result1= finder.find(image); |
- |
- // Draw a rectangle around the reference area |
- cv::rectangle(image,cv::Rect(360,55,40,50),cv::Scalar(0,0,0)); |
- |
- // Display image |
- cv::namedWindow("Image"); |
- cv::imshow("Image",image); |
- |
- // Display result |
- cv::namedWindow("Detection Result"); |
- cv::imshow("Detection Result",result1); |
- |
- // Second test image |
- cv::Mat image2= cv::imread("../dog.jpg",0); |
- cv::Mat result2; |
- result2= finder.find(image2); |
- |
- // Display result |
- cv::namedWindow("Result (2)"); |
- cv::imshow("Result (2)",result2); |
- |
- // Load color image |
- ColorHistogram hc; |
- cv::Mat color= cv::imread("../waves.jpg"); |
- color= hc.colorReduce(color,32); |
- cv::namedWindow("Color Image"); |
- cv::imshow("Color Image",color); |
- |
- imageROI= color(cv::Rect(0,0,165,75)); // blue sky area |
- |
- // Get 3D color histogram |
- cv::MatND shist= hc.getHistogram(imageROI); |
- // Histograms with SparseMat does not work with OpenCV2.1 |
- // cv::SparseMat shist= hc.getSparseHistogram(imageROI); |
- |
- finder.setHistogram(shist); |
- finder.setThreshold(0.05f); |
- |
- // Get back-projection of color histogram |
- result1= finder.find(color); |
- |
- cv::namedWindow("Color Backproject Result"); |
- cv::imshow("Color Backproject Result",result1); |
- |
- // Second color image |
- cv::Mat color2= cv::imread("../dog.jpg"); |
- color2= hc.colorReduce(color2,32); |
- |
- // Get back-projection of color histogram |
- result2= finder.find(color2); |
- |
- cv::namedWindow("Result color (2)"); |
- cv::imshow("Result color (2)",result2); |
- |
- // Get ab color histogram |
- color= cv::imread("../waves.jpg"); |
- imageROI= color(cv::Rect(0,0,165,75)); // blue sky area |
- cv::MatND colorhist= hc.getabHistogram(imageROI); |
- |
- finder.setHistogram(colorhist); |
- finder.setThreshold(0.05f); |
- |
- // Convert to Lab space |
- cv::Mat lab; |
- cv::cvtColor(color, lab, CV_BGR2Lab); |
- |
- // Get back-projection of ab histogram |
- int ch[2]={1,2}; |
- result1= finder.find(lab,-128.0f,127.0f,ch,2); |
- |
- cv::namedWindow("Result ab (1)"); |
- cv::imshow("Result ab (1)",result1); |
- |
- // Second color image |
- color2= cv::imread("../dog.jpg"); |
- |
- cv::namedWindow("Color Image (2)"); |
- cv::imshow("Color Image (2)",color2); |
- |
- cv::cvtColor(color2, lab, CV_BGR2Lab); |
- |
- result2= finder.find(lab,-128.0f,127.0f,ch,2); |
- |
- cv::namedWindow("Result ab (2)"); |
- cv::imshow("Result ab (2)",result2); |
- |
- // Get Hue color histogram |
- color= cv::imread("../waves.jpg"); |
- imageROI= color(cv::Rect(0,0,165,75)); // blue sky area |
- colorhist= hc.getHueHistogram(imageROI); |
- |
- finder.setHistogram(colorhist); |
- finder.setThreshold(0.3f); |
- |
- // Convert to HSV space |
- cv::Mat hsv; |
- cv::cvtColor(color, hsv, CV_BGR2HSV); |
- |
- // Get back-projection of hue histogram |
- ch[0]=0; |
- result1= finder.find(hsv,0.0f,180.0f,ch,1); |
- |
- cv::namedWindow("Result Hue (1)"); |
- cv::imshow("Result Hue (1)",result1); |
- |
- // Second color image |
- color2= cv::imread("../dog.jpg"); |
- |
- cv::cvtColor(color2, hsv, CV_BGR2HSV); |
- |
- result2= finder.find(hsv,0.0f,180.0f,ch,1); |
- |
- cv::namedWindow("Result Hue (2)"); |
- cv::imshow("Result Hue (2)",result2); |
- |
- cv::waitKey(); |
- return 0; |
-} |
- |
/trunk/Chapter 04/objectfinder.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/imageComparator.h |
=================================================================== |
--- trunk/Chapter 04/imageComparator.h (revision 9) |
+++ trunk/Chapter 04/imageComparator.h (nonexistent) |
@@ -1,72 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 4 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined ICOMPARATOR |
-#define ICOMPARATOR |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include "colorhistogram.h" |
- |
-class ImageComparator { |
- |
- private: |
- |
- cv::Mat reference; |
- cv::Mat input; |
- cv::MatND refH; |
- cv::MatND inputH; |
- |
- ColorHistogram hist; |
- int div; |
- |
- public: |
- |
- ImageComparator() : div(32) { |
- |
- } |
- |
- // Color reduction factor |
- // The comparaison will be made on images with |
- // color space reduced by this factor in each dimension |
- void setColorReduction( int factor) { |
- |
- div= factor; |
- } |
- |
- int getColorReduction() { |
- |
- return div; |
- } |
- |
- void setReferenceImage(const cv::Mat& image) { |
- |
- reference= hist.colorReduce(image,div); |
- refH= hist.getHistogram(reference); |
- } |
- |
- double compare(const cv::Mat& image) { |
- |
- input= hist.colorReduce(image,div); |
- inputH= hist.getHistogram(input); |
- |
- return cv::compareHist(refH,inputH,CV_COMP_INTERSECT); |
- } |
-}; |
- |
- |
-#endif |
/trunk/Chapter 04/imageComparator.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/histograms.cpp |
=================================================================== |
--- trunk/Chapter 04/histograms.cpp (revision 9) |
+++ trunk/Chapter 04/histograms.cpp (nonexistent) |
@@ -1,96 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 4 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-using namespace std; |
- |
-#include <opencv/cv.h> |
-#include <opencv/highgui.h> |
-#include "histogram.h" |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../group.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Image"); |
- cv::imshow("Image",image); |
- |
- // The histogram object |
- Histogram1D h; |
- |
- // Compute the histogram |
- cv::MatND histo= h.getHistogram(image); |
- |
- // Loop over each bin |
- for (int i=0; i<256; i++) |
- cout << "Value " << i << " = " << histo.at<float>(i) << endl; |
- |
- // Display a histogram as an image |
- cv::namedWindow("Histogram"); |
- cv::imshow("Histogram",h.getHistogramImage(image)); |
- |
- // creating a binary image by thresholding at the valley |
- cv::Mat thresholded; |
- cv::threshold(image,thresholded,60,255,cv::THRESH_BINARY); |
- |
- // Display the thresholded image |
- cv::namedWindow("Binary Image"); |
- cv::imshow("Binary Image",thresholded); |
- cv::imwrite("binary.bmp",thresholded); |
- |
- // Equalize the image |
- cv::Mat eq= h.equalize(image); |
- |
- // Show the result |
- cv::namedWindow("Equalized Image"); |
- cv::imshow("Equalized Image",eq); |
- |
- // Show the new histogram |
- cv::namedWindow("Equalized Histogram"); |
- cv::imshow("Equalized Histogram",h.getHistogramImage(eq)); |
- |
- // Stretch the image ignoring bins with less than 5 pixels |
- cv::Mat str= h.stretch(image,5); |
- |
- // Show the result |
- cv::namedWindow("Stretched Image"); |
- cv::imshow("Stretched Image",str); |
- |
- // Show the new histogram |
- cv::namedWindow("Stretched Histogram"); |
- cv::imshow("Stretched Histogram",h.getHistogramImage(str)); |
- |
- // Create an image inversion table |
- cv::Mat lookup; |
- |
- for (int i=0; i<256; i++) { |
- |
- lookup.data[i]= 255-i; |
- } |
- |
- // Apply lookup and display negative image |
- cv::namedWindow("Negative image"); |
- cv::imshow("Negative image",h.applyLookUp(image,lookup)); |
- |
- cv::waitKey(); |
- return 0; |
-} |
- |
/trunk/Chapter 04/histograms.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/colorhistogram.h |
=================================================================== |
--- trunk/Chapter 04/colorhistogram.h (revision 9) |
+++ trunk/Chapter 04/colorhistogram.h (nonexistent) |
@@ -1,169 +0,0 @@ |
-#if !defined COLHISTOGRAM |
-#define COLHISTOGRAM |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class ColorHistogram { |
- |
- private: |
- |
- int histSize[3]; |
- float hranges[2]; |
- const float* ranges[3]; |
- int channels[3]; |
- |
- public: |
- |
- ColorHistogram() { |
- |
- // Prepare arguments for a color histogram |
- histSize[0]= histSize[1]= histSize[2]= 256; |
- hranges[0]= 0.0; // BRG range |
- hranges[1]= 255.0; |
- ranges[0]= hranges; // all channels have the same range |
- ranges[1]= hranges; |
- ranges[2]= hranges; |
- channels[0]= 0; // the three channels |
- channels[1]= 1; |
- channels[2]= 2; |
- } |
- |
- // Computes the histogram. |
- cv::MatND getHistogram(const cv::Mat &image) { |
- |
- cv::MatND hist; |
- |
- // BGR color histogram |
- hranges[0]= 0.0; // BRG range |
- hranges[1]= 255.0; |
- channels[0]= 0; // the three channels |
- channels[1]= 1; |
- channels[2]= 2; |
- |
- // Compute histogram |
- cv::calcHist(&image, |
- 1, // histogram of 1 image only |
- channels, // the channel used |
- cv::Mat(), // no mask is used |
- hist, // the resulting histogram |
- 3, // it is a 3D histogram |
- histSize, // number of bins |
- ranges // pixel value range |
- ); |
- |
- return hist; |
- } |
- |
- // Computes the histogram. |
- cv::SparseMat getSparseHistogram(const cv::Mat &image) { |
- |
- cv::SparseMat hist(3,histSize,CV_32F); |
- |
- // BGR color histogram |
- hranges[0]= 0.0; // BRG range |
- hranges[1]= 255.0; |
- channels[0]= 0; // the three channels |
- channels[1]= 1; |
- channels[2]= 2; |
- |
- // Compute histogram |
- cv::calcHist(&image, |
- 1, // histogram of 1 image only |
- channels, // the channel used |
- cv::Mat(), // no mask is used |
- hist, // the resulting histogram |
- 3, // it is a 3D histogram |
- histSize, // number of bins |
- ranges // pixel value range |
- ); |
- |
- return hist; |
- } |
- |
- // Computes the 2D ab histogram. |
- // BGR source image is converted to Lab |
- cv::MatND getabHistogram(const cv::Mat &image) { |
- |
- cv::MatND hist; |
- |
- // Convert to Lab color space |
- cv::Mat lab; |
- cv::cvtColor(image, lab, CV_BGR2Lab); |
- |
- // Prepare arguments for a 2D color histogram |
- hranges[0]= -128.0; |
- hranges[1]= 127.0; |
- channels[0]= 1; // the two channels used are ab |
- channels[1]= 2; |
- |
- // Compute histogram |
- cv::calcHist(&lab, |
- 1, // histogram of 1 image only |
- channels, // the channel used |
- cv::Mat(), // no mask is used |
- hist, // the resulting histogram |
- 2, // it is a 2D histogram |
- histSize, // number of bins |
- ranges // pixel value range |
- ); |
- |
- return hist; |
- } |
- |
- // Computes the 1D Hue histogram with a mask. |
- // BGR source image is converted to HSV |
- cv::MatND getHueHistogram(const cv::Mat &image) { |
- |
- cv::MatND hist; |
- |
- // Convert to Lab color space |
- cv::Mat hue; |
- cv::cvtColor(image, hue, CV_BGR2HSV); |
- |
- // Prepare arguments for a 1D hue histogram |
- hranges[0]= 0.0; |
- hranges[1]= 180.0; |
- channels[0]= 0; // the hue channel |
- |
- // Compute histogram |
- cv::calcHist(&hue, |
- 1, // histogram of 1 image only |
- channels, // the channel used |
- cv::Mat(), // no mask is used |
- hist, // the resulting histogram |
- 1, // it is a 1D histogram |
- histSize, // number of bins |
- ranges // pixel value range |
- ); |
- |
- return hist; |
- } |
- |
- cv::Mat colorReduce(const cv::Mat &image, int div=64) { |
- |
- int n= static_cast<int>(log(static_cast<double>(div))/log(2.0)); |
- // mask used to round the pixel value |
- uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0 |
- |
- cv::Mat_<cv::Vec3b>::const_iterator it= image.begin<cv::Vec3b>(); |
- cv::Mat_<cv::Vec3b>::const_iterator itend= image.end<cv::Vec3b>(); |
- |
- // Set output image (always 1-channel) |
- cv::Mat result(image.rows,image.cols,image.type()); |
- cv::Mat_<cv::Vec3b>::iterator itr= result.begin<cv::Vec3b>(); |
- |
- for ( ; it!= itend; ++it, ++itr) { |
- |
- (*itr)[0]= ((*it)[0]&mask) + div/2; |
- (*itr)[1]= ((*it)[1]&mask) + div/2; |
- (*itr)[2]= ((*it)[2]&mask) + div/2; |
- } |
- |
- return result; |
-} |
- |
-}; |
- |
- |
-#endif |
/trunk/Chapter 04/colorhistogram.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/histogram.h |
=================================================================== |
--- trunk/Chapter 04/histogram.h (revision 9) |
+++ trunk/Chapter 04/histogram.h (nonexistent) |
@@ -1,192 +0,0 @@ |
-#if !defined HISTOGRAM |
-#define HISTOGRAM |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class Histogram1D { |
- |
- private: |
- |
- int histSize[1]; |
- float hranges[2]; |
- const float* ranges[1]; |
- int channels[1]; |
- |
- public: |
- |
- Histogram1D() { |
- |
- // Prepare arguments for 1D histogram |
- histSize[0]= 256; |
- hranges[0]= 0.0; |
- hranges[1]= 255.0; |
- ranges[0]= hranges; |
- channels[0]= 0; // by default, we look at channel 0 |
- } |
- |
- // Sets the channel on which histogram will be calculated. |
- // By default it is channel 0. |
- void setChannel(int c) { |
- |
- channels[0]= c; |
- } |
- |
- // Gets the channel used. |
- int getChannel() { |
- |
- return channels[0]; |
- } |
- |
- // Sets the range for the pixel values. |
- // By default it is [0,255] |
- void setRange(float minValue, float maxValue) { |
- |
- hranges[0]= minValue; |
- hranges[1]= maxValue; |
- } |
- |
- // Gets the min pixel value. |
- float getMinValue() { |
- |
- return hranges[0]; |
- } |
- |
- // Gets the max pixel value. |
- float getMaxValue() { |
- |
- return hranges[1]; |
- } |
- |
- // Sets the number of bins in histogram. |
- // By default it is 256. |
- void setNBins(int nbins) { |
- |
- histSize[0]= nbins; |
- } |
- |
- // Gets the number of bins in histogram. |
- int getNBins() { |
- |
- return histSize[0]; |
- } |
- |
- // Computes the 1D histogram. |
- cv::MatND getHistogram(const cv::Mat &image) { |
- |
- cv::MatND hist; |
- |
- // Compute histogram |
- cv::calcHist(&image, |
- 1, // histogram of 1 image only |
- channels, // the channel used |
- cv::Mat(), // no mask is used |
- hist, // the resulting histogram |
- 1, // it is a 1D histogram |
- histSize, // number of bins |
- ranges // pixel value range |
- ); |
- |
- return hist; |
- } |
- |
- // Computes the 1D histogram and returns an image of it. |
- cv::Mat getHistogramImage(const cv::Mat &image){ |
- |
- // Compute histogram first |
- cv::MatND hist= getHistogram(image); |
- |
- // Get min and max bin values |
- double maxVal=0; |
- double minVal=0; |
- cv::minMaxLoc(hist, &minVal, &maxVal, 0, 0); |
- |
- // Image on which to display histogram |
- cv::Mat histImg(histSize[0], histSize[0], CV_8U,cv::Scalar(255)); |
- |
- // set highest point at 90% of nbins |
- int hpt = static_cast<int>(0.9*histSize[0]); |
- |
- // Draw vertical line for each bin |
- for( int h = 0; h < histSize[0]; h++ ) { |
- |
- float binVal = hist.at<float>(h); |
- int intensity = static_cast<int>(binVal*hpt/maxVal); |
- cv::line(histImg,cv::Point(h,histSize[0]),cv::Point(h,histSize[0]-intensity),cv::Scalar::all(0)); |
- } |
- |
- return histImg; |
- } |
- |
- // Equalizes the source image. |
- cv::Mat equalize(const cv::Mat &image) { |
- |
- cv::Mat result; |
- cv::equalizeHist(image,result); |
- |
- return result; |
- } |
- |
- // Stretches the source image. |
- cv::Mat stretch(const cv::Mat &image, int minValue=0) { |
- |
- // Compute histogram first |
- cv::MatND hist= getHistogram(image); |
- |
- // find left extremity of the histogram |
- int imin= 0; |
- for( ; imin < histSize[0]; imin++ ) { |
- std::cout<<hist.at<float>(imin)<<std::endl; |
- if (hist.at<float>(imin) > minValue) |
- break; |
- } |
- |
- // find right extremity of the histogram |
- int imax= histSize[0]-1; |
- for( ; imax >= 0; imax-- ) { |
- |
- if (hist.at<float>(imax) > minValue) |
- break; |
- } |
- |
- // Create lookup table |
- int dims[1]={256}; |
- cv::MatND lookup(1,dims,CV_8U); |
- |
- for (int i=0; i<256; i++) { |
- |
- if (i < imin) lookup.at<uchar>(i)= 0; |
- else if (i > imax) lookup.at<uchar>(i)= 255; |
- else lookup.at<uchar>(i)= static_cast<uchar>(255.0*(i-imin)/(imax-imin)+0.5); |
- } |
- |
- // Apply lookup table |
- cv::Mat result; |
- result= applyLookUp(image,lookup); |
- |
- return result; |
- } |
- |
- // Applies a lookup table transforming an input image into a 1-channel image |
- cv::Mat applyLookUp(const cv::Mat& image, const cv::MatND& lookup) { |
- |
- // Set output image (always 1-channel) |
- cv::Mat result(image.rows,image.cols,CV_8U); |
- cv::Mat_<uchar>::iterator itr= result.begin<uchar>(); |
- |
- // Iterates over the input image |
- cv::Mat_<uchar>::const_iterator it= image.begin<uchar>(); |
- cv::Mat_<uchar>::const_iterator itend= image.end<uchar>(); |
- |
- // Applies lookup to each pixel |
- for ( ; it!= itend; ++it, ++itr) { |
- |
- *itr= lookup.at<uchar>(*it); |
- } |
- |
- return result; |
- } |
-}; |
- |
- |
-#endif |
/trunk/Chapter 04/histogram.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/objectFinder.h |
=================================================================== |
--- trunk/Chapter 04/objectFinder.h (revision 9) |
+++ trunk/Chapter 04/objectFinder.h (nonexistent) |
@@ -1,142 +0,0 @@ |
-#if !defined OFINDER |
-#define OFINDER |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class ObjectFinder { |
- |
- private: |
- |
- float hranges[2]; |
- const float* ranges[3]; |
- int channels[3]; |
- |
- float threshold; |
- cv::MatND histogram; |
- cv::SparseMat shistogram; |
- bool isSparse; |
- |
- public: |
- |
- ObjectFinder() : threshold(0.1f), isSparse(false) { |
- |
- ranges[0]= hranges; // all channels have the same range |
- ranges[1]= hranges; |
- ranges[2]= hranges; |
- } |
- |
- // Sets the threshold on histogram values [0,1] |
- void setThreshold(float t) { |
- |
- threshold= t; |
- } |
- |
- // Gets the threshold |
- float getThreshold() { |
- |
- return threshold; |
- } |
- |
- // Sets the reference histogram |
- void setHistogram(const cv::MatND& h) { |
- |
- isSparse= false; |
- histogram= h; |
- cv::normalize(histogram,histogram,1.0); |
- } |
- |
- // Sets the reference histogram |
- void setHistogram(const cv::SparseMat& h) { |
- |
- isSparse= true; |
- shistogram= h; |
- cv::normalize(shistogram,shistogram,1.0,cv::NORM_L2); |
- } |
- |
- // Finds the pixels belonging to the histogram |
- cv::Mat find(const cv::Mat& image) { |
- |
- cv::Mat result; |
- |
- hranges[0]= 0.0; // range [0,255] |
- hranges[1]= 255.0; |
- channels[0]= 0; // the three channels |
- channels[1]= 1; |
- channels[2]= 2; |
- |
- if (isSparse) { // call the right function based on histogram type |
- |
- cv::calcBackProject(&image, |
- 1, // one image |
- channels, // vector specifying what histogram dimensions belong to what image channels |
- shistogram, // the histogram we are using |
- result, // the resulting back projection image |
- ranges, // the range of values, for each dimension |
- 255.0 // the scaling factor is chosen such that a histogram value of 1 maps to 255 |
- ); |
- |
- } else { |
- |
- cv::calcBackProject(&image, |
- 1, // one image |
- channels, // vector specifying what histogram dimensions belong to what image channels |
- histogram, // the histogram we are using |
- result, // the resulting back projection image |
- ranges, // the range of values, for each dimension |
- 255.0 // the scaling factor is chosen such that a histogram value of 1 maps to 255 |
- ); |
- } |
- |
- |
- // Threshold back projection to obtain a binary image |
- if (threshold>0.0) |
- cv::threshold(result, result, 255*threshold, 255, cv::THRESH_BINARY); |
- |
- return result; |
- } |
- |
- cv::Mat find(const cv::Mat& image, float minValue, float maxValue, int *channels, int dim) { |
- |
- cv::Mat result; |
- |
- hranges[0]= minValue; |
- hranges[1]= maxValue; |
- |
- for (int i=0; i<dim; i++) |
- this->channels[i]= channels[i]; |
- |
- if (isSparse) { // call the right function based on histogram type |
- |
- cv::calcBackProject(&image, |
- 1, // we only use one image at a time |
- channels, // vector specifying what histogram dimensions belong to what image channels |
- shistogram, // the histogram we are using |
- result, // the resulting back projection image |
- ranges, // the range of values, for each dimension |
- 255.0 // the scaling factor is chosen such that a histogram value of 1 maps to 255 |
- ); |
- |
- } else { |
- |
- cv::calcBackProject(&image, |
- 1, // we only use one image at a time |
- channels, // vector specifying what histogram dimensions belong to what image channels |
- histogram, // the histogram we are using |
- result, // the resulting back projection image |
- ranges, // the range of values, for each dimension |
- 255.0 // the scaling factor is chosen such that a histogram value of 1 maps to 255 |
- ); |
- } |
- |
- // Threshold back projection to obtain a binary image |
- if (threshold>0.0) |
- cv::threshold(result, result, 255*threshold, 255, cv::THRESH_BINARY); |
- |
- return result; |
- } |
- |
-}; |
- |
- |
-#endif |
/trunk/Chapter 04/objectFinder.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/retrieve.cpp |
=================================================================== |
--- trunk/Chapter 04/retrieve.cpp (revision 9) |
+++ trunk/Chapter 04/retrieve.cpp (nonexistent) |
@@ -1,74 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 4 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-using namespace std; |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-#include "imageComparator.h" |
- |
-int main() |
-{ |
- // Read reference image |
- cv::Mat image= cv::imread("../waves.jpg"); |
- if (!image.data) |
- return 0; |
- |
- // Display image |
- cv::namedWindow("Query Image"); |
- cv::imshow("Query Image",image); |
- |
- ImageComparator c; |
- c.setReferenceImage(image); |
- |
- // Read an image and compare it with reference |
- cv::Mat input= cv::imread("../dog.jpg"); |
- cout << "waves vs dog: " << c.compare(input) << endl; |
- |
- // Read an image and compare it with reference |
- input= cv::imread("../marais.jpg"); |
- cout << "waves vs marais: " << c.compare(input) << endl; |
- |
- // Read an image and compare it with reference |
- input= cv::imread("../bear.jpg"); |
- cout << "waves vs bear: " << c.compare(input) << endl; |
- |
- // Read an image and compare it with reference |
- input= cv::imread("../beach.jpg"); |
- cout << "waves vs beach: " << c.compare(input) << endl; |
- |
- // Read an image and compare it with reference |
- input= cv::imread("../polar.jpg"); |
- cout << "waves vs polar: " << c.compare(input) << endl; |
- |
- // Read an image and compare it with reference |
- input= cv::imread("../moose.jpg"); |
- cout << "waves vs moose: " << c.compare(input) << endl; |
- |
- // Read an image and compare it with reference |
- input= cv::imread("../lake.jpg"); |
- cout << "waves vs lake: " << c.compare(input) << endl; |
- |
- // Read an image and compare it with reference |
- input= cv::imread("../fundy.jpg"); |
- cout << "waves vs fundy: " << c.compare(input) << endl; |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 04/retrieve.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/finder.cpp |
=================================================================== |
--- trunk/Chapter 04/finder.cpp (revision 9) |
+++ trunk/Chapter 04/finder.cpp (nonexistent) |
@@ -1,128 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 4 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-using namespace std; |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/video/tracking.hpp> |
- |
-#include "objectFinder.h" |
-#include "colorhistogram.h" |
- |
-int main() |
-{ |
- // Read reference image |
- cv::Mat image= cv::imread("../baboon1.jpg"); |
- if (!image.data) |
- return 0; |
- |
- // Define ROI |
- cv::Mat imageROI= image(cv::Rect(110,260,35,40)); |
- cv::rectangle(image, cv::Rect(110,260,35,40),cv::Scalar(0,0,255)); |
- |
- // Display image |
- cv::namedWindow("Image"); |
- cv::imshow("Image",image); |
- |
- // Get the Hue histogram |
- int minSat=65; |
- ColorHistogram hc; |
- cv::MatND colorhist= hc.getHueHistogram(imageROI); |
- |
- ObjectFinder finder; |
- finder.setHistogram(colorhist); |
- finder.setThreshold(0.2f); |
- |
- // Convert to HSV space |
- cv::Mat hsv; |
- cv::cvtColor(image, hsv, CV_BGR2HSV); |
- |
- // Split the image |
- vector<cv::Mat> v; |
- cv::split(hsv,v); |
- |
- // Eliminate pixels with low saturation |
- cv::threshold(v[1],v[1],minSat,255,cv::THRESH_BINARY); |
- cv::namedWindow("Saturation"); |
- cv::imshow("Saturation",v[1]); |
- |
- // Get back-projection of hue histogram |
- int ch[1]={0}; |
- cv::Mat result= finder.find(hsv,0.0f,180.0f,ch,1); |
- |
- cv::namedWindow("Result Hue"); |
- cv::imshow("Result Hue",result); |
- |
- cv::bitwise_and(result,v[1],result); |
- cv::namedWindow("Result Hue and"); |
- cv::imshow("Result Hue and",result); |
- |
- // Second image |
- image= cv::imread("../baboon3.jpg"); |
- |
- // Display image |
- cv::namedWindow("Image 2"); |
- cv::imshow("Image 2",image); |
- |
- // Convert to HSV space |
- cv::cvtColor(image, hsv, CV_BGR2HSV); |
- |
- // Split the image |
- cv::split(hsv,v); |
- |
- // Eliminate pixels with low saturation |
- cv::threshold(v[1],v[1],minSat,255,cv::THRESH_BINARY); |
- cv::namedWindow("Saturation"); |
- cv::imshow("Saturation",v[1]); |
- |
- // Get back-projection of hue histogram |
- result= finder.find(hsv,0.0f,180.0f,ch,1); |
- |
- cv::namedWindow("Result Hue"); |
- cv::imshow("Result Hue",result); |
- |
- // Eliminate low stauration pixels |
- cv::bitwise_and(result,v[1],result); |
- cv::namedWindow("Result Hue and"); |
- cv::imshow("Result Hue and",result); |
- |
- // Get back-projection of hue histogram |
- finder.setThreshold(-1.0f); |
- result= finder.find(hsv,0.0f,180.0f,ch,1); |
- cv::bitwise_and(result,v[1],result); |
- cv::namedWindow("Result Hue and raw"); |
- cv::imshow("Result Hue and raw",result); |
- |
- cv::Rect rect(110,260,35,40); |
- cv::rectangle(image, rect, cv::Scalar(0,0,255)); |
- |
- cv::TermCriteria criteria(cv::TermCriteria::MAX_ITER,10,0.01); |
- cout << "meanshift= " << cv::meanShift(result,rect,criteria) << endl; |
- |
- cv::rectangle(image, rect, cv::Scalar(0,255,0)); |
- |
- // Display image |
- cv::namedWindow("Image 2 result"); |
- cv::imshow("Image 2 result",image); |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 04/finder.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 04/README.txt |
=================================================================== |
--- trunk/Chapter 04/README.txt (revision 9) |
+++ trunk/Chapter 04/README.txt (nonexistent) |
@@ -1,28 +0,0 @@ |
-This directory contains material supporting chapter 4 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-Files: |
- histogram.h |
- histograms.cpp |
-correspond to Recipes: |
-Computing the Image Histogram |
-Applying Look-up Tables to Modify Image Appearance |
- |
-Files: |
- colorhistogram.h |
- objectfinder.h |
- objectfinder.cpp |
-correspond to Recipe: |
-Backprojecting a Histogram to Detect Specific Image Content |
- |
-File: |
- finder.cpp |
-correspond to Recipe: |
-Using the Meanshift Algorithm to Find an Object |
- |
-Files: |
- imageComparator.h |
- retrieve.cpp |
-correspond to Recipes: |
-Retrieving Similar Images using Histogram Comparison |
/trunk/Chapter 04/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 05/morpho2.cpp |
=================================================================== |
--- trunk/Chapter 05/morpho2.cpp (revision 9) |
+++ trunk/Chapter 05/morpho2.cpp (nonexistent) |
@@ -1,125 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 5 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include "morphoFeatures.h" |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../building.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Image"); |
- cv::imshow("Image",image); |
- |
- // Create the morphological features instance |
- MorphoFeatures morpho; |
- morpho.setThreshold(40); |
- |
- // Get the edges |
- cv::Mat edges; |
- edges= morpho.getEdges(image); |
- |
- // Display the edge image |
- cv::namedWindow("Edge Image"); |
- cv::imshow("Edge Image",edges); |
- |
- // Get the corners |
- morpho.setThreshold(-1); |
- cv::Mat corners; |
- corners= morpho.getCorners(image); |
- cv::morphologyEx(corners,corners,cv::MORPH_TOPHAT,cv::Mat()); |
- cv::threshold(corners, corners, 40, 255, cv::THRESH_BINARY_INV); |
- |
- // Display the corner image |
- cv::namedWindow("Corner Image"); |
- cv::imshow("Corner Image",corners); |
- |
- // Display the corner on the image |
- morpho.drawOnImage(corners,image); |
- cv::namedWindow("Corners on Image"); |
- cv::imshow("Corners on Image",image); |
- |
- // Read and display image of square |
- image= cv::imread("../square.bmp",0); |
- cv::namedWindow("Square Image"); |
- cv::imshow("Square Image",image); |
- |
- // Creating the cross-shaped structuring element |
- cv::Mat cross(5,5,CV_8U,cv::Scalar(0)); |
- for (int i=0; i<5; i++) { |
- |
- cross.at<uchar>(2,i)= 1; |
- cross.at<uchar>(i,2)= 1; |
- } |
- |
- // Dilate with a cross |
- cv::Mat result; |
- cv::dilate(image,result,cross); |
- |
- // Display the result |
- cv::namedWindow("Dilated square with cross"); |
- cv::imshow("Dilated square with cross",result); |
- |
- // Creating the diamond-shaped structuring element |
- cv::Mat diamond(5,5,CV_8U,cv::Scalar(1)); |
- diamond.at<uchar>(0,0)= 0; |
- diamond.at<uchar>(0,1)= 0; |
- diamond.at<uchar>(1,0)= 0; |
- diamond.at<uchar>(4,4)= 0; |
- diamond.at<uchar>(3,4)= 0; |
- diamond.at<uchar>(4,3)= 0; |
- diamond.at<uchar>(4,0)= 0; |
- diamond.at<uchar>(4,1)= 0; |
- diamond.at<uchar>(3,0)= 0; |
- diamond.at<uchar>(0,4)= 0; |
- diamond.at<uchar>(0,3)= 0; |
- diamond.at<uchar>(1,4)= 0; |
- |
- // Erode with a diamond |
- cv::Mat result2; |
- cv::erode(result,result2,diamond); |
- |
- // Display the result |
- cv::namedWindow("Eroded square with diamond"); |
- cv::imshow("Eroded square with diamond",result2); |
- |
- // Combine the images into one |
- cv::Mat final(100,300,CV_8U); |
- cv::Mat window= final(cv::Rect(0,0,100,100)); |
- image.copyTo(window); |
- window= final(cv::Rect(100,0,100,100)); |
- result.copyTo(window); |
- window= final(cv::Rect(200,0,100,100)); |
- result2.copyTo(window); |
- |
- // Display the combined result |
- cv::namedWindow("Combined"); |
- cv::imshow("Combined",final); |
- |
- // Save combined result |
- cv::imwrite("squares.bmp",final); |
- |
- cv::waitKey(); |
- |
- return 0; |
-} |
/trunk/Chapter 05/morpho2.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 05/morphoFeatures.h |
=================================================================== |
--- trunk/Chapter 05/morphoFeatures.h (revision 9) |
+++ trunk/Chapter 05/morphoFeatures.h (nonexistent) |
@@ -1,142 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 5 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined MORPHOF |
-#define MORPHOF |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class MorphoFeatures { |
- |
- private: |
- |
- // threshold to produce binary image |
- int threshold; |
- // structuring elements used in corner detection |
- cv::Mat cross; |
- cv::Mat diamond; |
- cv::Mat square; |
- cv::Mat x; |
- |
- void applyThreshold(cv::Mat& result) { |
- |
- // Apply threshold on result |
- if (threshold>0) |
- cv::threshold(result, result, threshold, 255, cv::THRESH_BINARY_INV); |
- } |
- |
- public: |
- |
- MorphoFeatures() : threshold(-1), cross(5,5,CV_8U,cv::Scalar(0)), |
- diamond(5,5,CV_8U,cv::Scalar(1)), |
- square(5,5,CV_8U,cv::Scalar(1)), |
- x(5,5,CV_8U,cv::Scalar(0)){ |
- |
- // Creating the cross-shaped structuring element |
- for (int i=0; i<5; i++) { |
- |
- cross.at<uchar>(2,i)= 1; |
- cross.at<uchar>(i,2)= 1; |
- } |
- |
- // Creating the diamond-shaped structuring element |
- diamond.at<uchar>(0,0)= 0; |
- diamond.at<uchar>(0,1)= 0; |
- diamond.at<uchar>(1,0)= 0; |
- diamond.at<uchar>(4,4)= 0; |
- diamond.at<uchar>(3,4)= 0; |
- diamond.at<uchar>(4,3)= 0; |
- diamond.at<uchar>(4,0)= 0; |
- diamond.at<uchar>(4,1)= 0; |
- diamond.at<uchar>(3,0)= 0; |
- diamond.at<uchar>(0,4)= 0; |
- diamond.at<uchar>(0,3)= 0; |
- diamond.at<uchar>(1,4)= 0; |
- |
- // Creating the x-shaped structuring element |
- for (int i=0; i<5; i++) { |
- |
- x.at<uchar>(i,i)= 1; |
- x.at<uchar>(4-i,i)= 1; |
- } |
- } |
- |
- void setThreshold(int t) { |
- |
- threshold= t; |
- } |
- |
- int getThreshold() const { |
- |
- return threshold; |
- } |
- |
- cv::Mat getEdges(const cv::Mat &image) { |
- |
- // Get the gradient image |
- cv::Mat result; |
- cv::morphologyEx(image,result,cv::MORPH_GRADIENT,cv::Mat()); |
- |
- // Apply threshold to obtain a binary image |
- applyThreshold(result); |
- |
- return result; |
- } |
- |
- cv::Mat getCorners(const cv::Mat &image) { |
- |
- cv::Mat result; |
- |
- // Dilate with a cross |
- cv::dilate(image,result,cross); |
- |
- // Erode with a diamond |
- cv::erode(result,result,diamond); |
- |
- cv::Mat result2; |
- // Dilate with a X |
- cv::dilate(image,result2,x); |
- |
- // Erode with a square |
- cv::erode(result2,result2,square); |
- |
- // Corners are obtained by differencing |
- // the two closed images |
- cv::absdiff(result2,result,result); |
- |
- // Apply threshold to obtain a binary image |
- applyThreshold(result); |
- |
- return result; |
- } |
- |
- void drawOnImage(const cv::Mat& binary, cv::Mat& image) { |
- |
- cv::Mat_<uchar>::const_iterator it= binary.begin<uchar>(); |
- cv::Mat_<uchar>::const_iterator itend= binary.end<uchar>(); |
- |
- // for each pixel |
- for (int i=0; it!= itend; ++it,++i) { |
- if (!*it) |
- cv::circle(image,cv::Point(i%image.step,i/image.step),5,cv::Scalar(255,0,0)); |
- } |
- } |
-}; |
- |
- |
-#endif |
/trunk/Chapter 05/morphoFeatures.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 05/watershedSegmentation.h |
=================================================================== |
--- trunk/Chapter 05/watershedSegmentation.h (revision 9) |
+++ trunk/Chapter 05/watershedSegmentation.h (nonexistent) |
@@ -1,68 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 5 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined WATERSHS |
-#define WATERSHS |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class WatershedSegmenter { |
- |
- private: |
- |
- cv::Mat markers; |
- |
- public: |
- |
- void setMarkers(const cv::Mat& markerImage) { |
- |
- // Convert to image of ints |
- markerImage.convertTo(markers,CV_32S); |
- } |
- |
- cv::Mat process(const cv::Mat &image) { |
- |
- // Apply watershed |
- cv::watershed(image,markers); |
- |
- return markers; |
- } |
- |
- // Return result in the form of an image |
- cv::Mat getSegmentation() { |
- |
- cv::Mat tmp; |
- // all segment with label higher than 255 |
- // will be assigned value 255 |
- markers.convertTo(tmp,CV_8U); |
- |
- return tmp; |
- } |
- |
- // Return watershed in the form of an image |
- cv::Mat getWatersheds() { |
- |
- cv::Mat tmp; |
- markers.convertTo(tmp,CV_8U,255,255); |
- |
- return tmp; |
- } |
-}; |
- |
- |
-#endif |
/trunk/Chapter 05/watershedSegmentation.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 05/README.txt |
=================================================================== |
--- trunk/Chapter 05/README.txt (revision 9) |
+++ trunk/Chapter 05/README.txt (nonexistent) |
@@ -1,21 +0,0 @@ |
-This directory contains material supporting chapter 5 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-File: |
- morphology.cpp |
-correspond to Recipes: |
-Eroding and Dilating Images using Morphological Filters |
-Opening and Closing Images using Morphological Filters |
- |
-Files: |
- morpho2.cpp |
- morphoFeatures.h |
-correspond to Recipe: |
-Detecting edges and corners using morphological filters |
- |
-Files: |
- segment.cpp |
- watershedSegmentation.h |
-correspond to Recipe: |
-Segmenting images using watersheds |
\ No newline at end of file |
/trunk/Chapter 05/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 05/morphology.cpp |
=================================================================== |
--- trunk/Chapter 05/morphology.cpp (revision 9) |
+++ trunk/Chapter 05/morphology.cpp (nonexistent) |
@@ -1,104 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 5 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../binary.bmp"); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Image"); |
- cv::imshow("Image",image); |
- |
- // Erode the image |
- cv::Mat eroded; |
- cv::erode(image,eroded,cv::Mat()); |
- |
- // Display the eroded image |
- cv::namedWindow("Eroded Image"); |
- cv::imshow("Eroded Image",eroded); |
- |
- // Dilate the image |
- cv::Mat dilated; |
- cv::dilate(image,dilated,cv::Mat()); |
- |
- // Display the dialted image |
- cv::namedWindow("Dilated Image"); |
- cv::imshow("Dilated Image",dilated); |
- |
- // Erode the image with a larger s.e. |
- cv::Mat element(7,7,CV_8U,cv::Scalar(1)); |
- cv::erode(image,eroded,element); |
- |
- // Display the eroded image |
- cv::namedWindow("Eroded Image (7x7)"); |
- cv::imshow("Eroded Image (7x7)",eroded); |
- |
- // Erode the image 3 times. |
- cv::erode(image,eroded,cv::Mat(),cv::Point(-1,-1),3); |
- |
- // Display the eroded image |
- cv::namedWindow("Eroded Image (3 times)"); |
- cv::imshow("Eroded Image (3 times)",eroded); |
- |
- // Close the image |
- cv::Mat element5(5,5,CV_8U,cv::Scalar(1)); |
- cv::Mat closed; |
- cv::morphologyEx(image,closed,cv::MORPH_CLOSE,element5); |
- |
- // Display the opened image |
- cv::namedWindow("Closed Image"); |
- cv::imshow("Closed Image",closed); |
- |
- // Open the image |
- cv::Mat opened; |
- cv::morphologyEx(image,opened,cv::MORPH_OPEN,element5); |
- |
- // Display the opened image |
- cv::namedWindow("Opened Image"); |
- cv::imshow("Opened Image",opened); |
- |
- // Close and Open the image |
- cv::morphologyEx(image,image,cv::MORPH_CLOSE,element5); |
- cv::morphologyEx(image,image,cv::MORPH_OPEN,element5); |
- |
- // Display the close/opened image |
- cv::namedWindow("Closed and Opened Image"); |
- cv::imshow("Closed and Opened Image",image); |
- cv::imwrite("binaryGroup.bmp",image); |
- |
- // Read input image |
- image= cv::imread("../binary.bmp"); |
- |
- // Open and Close the image |
- cv::morphologyEx(image,image,cv::MORPH_OPEN,element5); |
- cv::morphologyEx(image,image,cv::MORPH_CLOSE,element5); |
- |
- // Display the close/opened image |
- cv::namedWindow("Opened and Closed Image"); |
- cv::imshow("Opened and Closed Image",image); |
- |
- cv::waitKey(); |
- return 0; |
-} |
- |
/trunk/Chapter 05/morphology.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 05/segment.cpp |
=================================================================== |
--- trunk/Chapter 05/segment.cpp (revision 9) |
+++ trunk/Chapter 05/segment.cpp (nonexistent) |
@@ -1,167 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 5 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include "watershedSegmentation.h" |
- |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../group.jpg"); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Original Image"); |
- cv::imshow("Original Image",image); |
- |
- // Get the binary map |
- cv::Mat binary; |
- binary= cv::imread("../binary.bmp",0); |
- |
- // Display the binary image |
- cv::namedWindow("Binary Image"); |
- cv::imshow("Binary Image",binary); |
- |
- // Eliminate noise and smaller objects |
- cv::Mat fg; |
- cv::erode(binary,fg,cv::Mat(),cv::Point(-1,-1),6); |
- |
- // Display the foreground image |
- cv::namedWindow("Foreground Image"); |
- cv::imshow("Foreground Image",fg); |
- |
- // Identify image pixels without objects |
- cv::Mat bg; |
- cv::dilate(binary,bg,cv::Mat(),cv::Point(-1,-1),6); |
- cv::threshold(bg,bg,1,128,cv::THRESH_BINARY_INV); |
- |
- // Display the background image |
- cv::namedWindow("Background Image"); |
- cv::imshow("Background Image",bg); |
- |
- // Show markers image |
- cv::Mat markers(binary.size(),CV_8U,cv::Scalar(0)); |
- markers= fg+bg; |
- cv::namedWindow("Markers"); |
- cv::imshow("Markers",markers); |
- |
- // Create watershed segmentation object |
- WatershedSegmenter segmenter; |
- |
- // Set markers and process |
- segmenter.setMarkers(markers); |
- segmenter.process(image); |
- |
- // Display segmentation result |
- cv::namedWindow("Segmentation"); |
- cv::imshow("Segmentation",segmenter.getSegmentation()); |
- |
- // Display watersheds |
- cv::namedWindow("Watersheds"); |
- cv::imshow("Watersheds",segmenter.getWatersheds()); |
- |
- // Open another image |
- image= cv::imread("../tower.jpg"); |
- |
- // Identify background pixels |
- cv::Mat imageMask(image.size(),CV_8U,cv::Scalar(0)); |
- cv::rectangle(imageMask,cv::Point(5,5),cv::Point(image.cols-5,image.rows-5),cv::Scalar(255),3); |
- // Identify foreground pixels (in the middle of the image) |
- cv::rectangle(imageMask,cv::Point(image.cols/2-10,image.rows/2-10), |
- cv::Point(image.cols/2+10,image.rows/2+10),cv::Scalar(1),10); |
- |
- // Set markers and process |
- segmenter.setMarkers(imageMask); |
- segmenter.process(image); |
- |
- // Display the image with markers |
- cv::rectangle(image,cv::Point(5,5),cv::Point(image.cols-5,image.rows-5),cv::Scalar(255,255,255),3); |
- cv::rectangle(image,cv::Point(image.cols/2-10,image.rows/2-10), |
- cv::Point(image.cols/2+10,image.rows/2+10),cv::Scalar(1,1,1),10); |
- cv::namedWindow("Image with marker"); |
- cv::imshow("Image with marker",image); |
- |
- // Display watersheds |
- cv::namedWindow("Watersheds of foreground object"); |
- cv::imshow("Watersheds of foreground object",segmenter.getWatersheds()); |
- |
- // Open another image |
- image= cv::imread("../tower.jpg"); |
- |
- // define bounding rectangle |
- cv::Rect rectangle(50,70,image.cols-150,image.rows-180); |
- |
- cv::Mat result; // segmentation result (4 possible values) |
- cv::Mat bgModel,fgModel; // the models (internally used) |
- // GrabCut segmentation |
- cv::grabCut(image, // input image |
- result, // segmentation result |
- rectangle,// rectangle containing foreground |
- bgModel,fgModel, // models |
- 1, // number of iterations |
- cv::GC_INIT_WITH_RECT); // use rectangle |
- |
- // Get the pixels marked as likely foreground |
- cv::compare(result,cv::GC_PR_FGD,result,cv::CMP_EQ); |
- // Generate output image |
- cv::Mat foreground(image.size(),CV_8UC3,cv::Scalar(255,255,255)); |
- image.copyTo(foreground,result); // bg pixels not copied |
- |
- // draw rectangle on original image |
- cv::rectangle(image, rectangle, cv::Scalar(255,255,255),1); |
- cv::namedWindow("Image"); |
- cv::imshow("Image",image); |
- |
- // display result |
- cv::namedWindow("Segmented Image"); |
- cv::imshow("Segmented Image",foreground); |
- |
- // Open another image |
- image= cv::imread("../group.jpg"); |
- |
- // define bounding rectangle |
- cv::Rect rectangle2(10,100,380,180); |
- |
- cv::Mat bkgModel,fgrModel; // the models (internally used) |
- // GrabCut segmentation |
- cv::grabCut(image, // input image |
- result, // segmentation result |
- rectangle2,bkgModel,fgrModel,5,cv::GC_INIT_WITH_RECT); |
- // Get the pixels marked as likely foreground |
-// cv::compare(result,cv::GC_PR_FGD,result,cv::CMP_EQ); |
- result= result&1; |
- foreground.create(image.size(),CV_8UC3); |
- foreground.setTo(cv::Scalar(255,255,255)); |
- image.copyTo(foreground,result); // bg pixels not copied |
- |
- // draw rectangle on original image |
- cv::rectangle(image, rectangle2, cv::Scalar(255,255,255),1); |
- cv::namedWindow("Image 2"); |
- cv::imshow("Image 2",image); |
- |
- // display result |
- cv::namedWindow("Foreground objects"); |
- cv::imshow("Foreground objects",foreground); |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 05/segment.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 06/README.txt |
=================================================================== |
--- trunk/Chapter 06/README.txt (revision 9) |
+++ trunk/Chapter 06/README.txt (nonexistent) |
@@ -1,16 +0,0 @@ |
-This directory contains material supporting chapter 6 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-File: |
- filters.cpp |
-correspond to Recipes: |
-Filtering Images using Low-pass Filters |
-Filtering Images using a Median Filter |
- |
-Files: |
- dderivatives.cpp |
- laplacianZC.h |
-correspond to Recipes: |
-Applying Directional Filters to Detect Edges |
-Computing the Laplacian of an Image |
/trunk/Chapter 06/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 06/derivatives.cpp |
=================================================================== |
--- trunk/Chapter 06/derivatives.cpp (revision 9) |
+++ trunk/Chapter 06/derivatives.cpp (nonexistent) |
@@ -1,181 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 6 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <iomanip> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include "laplacianZC.h" |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../boldt.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Original Image"); |
- cv::imshow("Original Image",image); |
- |
- // Compute Sobel X derivative |
- cv::Mat sobelX; |
- cv::Sobel(image,sobelX,CV_8U,1,0,3,0.4,128); |
- |
- // Display the image |
- cv::namedWindow("Sobel X Image"); |
- cv::imshow("Sobel X Image",sobelX); |
- |
- // Compute Sobel Y derivative |
- cv::Mat sobelY; |
- cv::Sobel(image,sobelY,CV_8U,0,1,3,0.4,128); |
- |
- // Display the image |
- cv::namedWindow("Sobel Y Image"); |
- cv::imshow("Sobel Y Image",sobelY); |
- |
- // Compute norm of Sobel |
- cv::Sobel(image,sobelX,CV_16S,1,0); |
- cv::Sobel(image,sobelY,CV_16S,0,1); |
- cv::Mat sobel; |
- //compute the L1 norm |
- sobel= abs(sobelX)+abs(sobelY); |
- |
- double sobmin, sobmax; |
- cv::minMaxLoc(sobel,&sobmin,&sobmax); |
- std::cout << "sobel value range: " << sobmin << " " << sobmax << std::endl; |
- |
- // Print window pixel values |
- for (int i=0; i<12; i++) { |
- for (int j=0; j<12; j++) |
- std::cout << std::setw(5) << static_cast<int>(sobel.at<short>(i+135,j+362)) << " "; |
- std::cout << std::endl; |
- } |
- std::cout << std::endl; |
- std::cout << std::endl; |
- std::cout << std::endl; |
- |
- // Conversion to 8-bit image |
- // sobelImage = -alpha*sobel + 255 |
- cv::Mat sobelImage; |
- sobel.convertTo(sobelImage,CV_8U,-255./sobmax,255); |
- |
- // Display the image |
- cv::namedWindow("Sobel Image"); |
- cv::imshow("Sobel Image",sobelImage); |
- |
- // Apply threshold to Sobel norm (low threshold value) |
- cv::Mat sobelThresholded; |
- cv::threshold(sobelImage, sobelThresholded, 225, 255, cv::THRESH_BINARY); |
- |
- // Display the image |
- cv::namedWindow("Binary Sobel Image (low)"); |
- cv::imshow("Binary Sobel Image (low)",sobelThresholded); |
- |
- // Apply threshold to Sobel norm (high threshold value) |
- cv::threshold(sobelImage, sobelThresholded, 190, 255, cv::THRESH_BINARY); |
- |
- // Display the image |
- cv::namedWindow("Binary Sobel Image (high)"); |
- cv::imshow("Binary Sobel Image (high)",sobelThresholded); |
- |
- // Compute Laplacian 3x3 |
- cv::Mat laplace; |
- cv::Laplacian(image,laplace,CV_8U,1,1,128); |
- |
- // Display the image |
- cv::namedWindow("Laplacian Image"); |
- cv::imshow("Laplacian Image",laplace); |
- |
- // Print window pixel values |
- for (int i=0; i<12; i++) { |
- for (int j=0; j<12; j++) |
- std::cout << std::setw(5) << static_cast<int>(laplace.at<uchar>(i+135,j+362))-128 << " "; |
- std::cout << std::endl; |
- } |
- std::cout << std::endl; |
- std::cout << std::endl; |
- std::cout << std::endl; |
- |
- // Compute Laplacian 7x7 |
- cv::Laplacian(image,laplace,CV_8U,7,0.01,128); |
- |
- // Display the image |
- cv::namedWindow("Laplacian Image"); |
- cv::imshow("Laplacian Image",laplace); |
- |
- // Print window pixel values |
- for (int i=0; i<12; i++) { |
- for (int j=0; j<12; j++) |
- std::cout << std::setw(5) << static_cast<int>(laplace.at<uchar>(i+135,j+362))-128 << " "; |
- std::cout << std::endl; |
- } |
- |
- // Extract small window |
- cv::Mat window(image,cv::Rect(362,135,12,12)); |
- cv::namedWindow("Image window"); |
- cv::imshow("Image window",window); |
- cv::imwrite("window.bmp",window); |
- |
- // Compute Laplacian using LaplacianZC class |
- LaplacianZC laplacian; |
- laplacian.setAperture(7); |
- cv::Mat flap= laplacian.computeLaplacian(image); |
- double lapmin, lapmax; |
- cv::minMaxLoc(flap,&lapmin,&lapmax); |
- std::cout << "Laplacian value range=[" << lapmin << "," << lapmax << "]\n"; |
- laplace= laplacian.getLaplacianImage(); |
- cv::namedWindow("Laplacian Image (7x7)"); |
- cv::imshow("Laplacian Image (7x7)",laplace); |
- |
- // Print Laplacian values |
- std::cout << std::endl; |
- for (int i=0; i<12; i++) { |
- for (int j=0; j<12; j++) |
- std::cout << std::setw(5) << static_cast<int>(flap.at<float>(i+135,j+362)/100) << " "; |
- std::cout << std::endl; |
- } |
- std::cout << std::endl; |
- |
- // Compute and display the zero-crossing points |
- cv::Mat zeros; |
- zeros= laplacian.getZeroCrossings(lapmax); |
- cv::namedWindow("Zero-crossings"); |
- cv::imshow("Zero-crossings",zeros); |
- |
- // Compute and display the zero-crossing points (Sobel version) |
- zeros= laplacian.getZeroCrossings(); |
- zeros= laplacian.getZeroCrossingsWithSobel(50); |
- cv::namedWindow("Zero-crossings (2)"); |
- cv::imshow("Zero-crossings (2)",zeros); |
- |
- // Print window pixel values |
- for (int i=0; i<12; i++) { |
- for (int j=0; j<12; j++) |
- std::cout << std::setw(2) << static_cast<int>(zeros.at<uchar>(i+135,j+362)) << " "; |
- std::cout << std::endl; |
- } |
- |
- // Display the image with window |
- cv::rectangle(image,cv::Point(362,135),cv::Point(374,147),cv::Scalar(255,255,255)); |
- cv::namedWindow("Original Image with window"); |
- cv::imshow("Original Image with window",image); |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 06/derivatives.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 06/laplacianZC.h |
=================================================================== |
--- trunk/Chapter 06/laplacianZC.h (revision 9) |
+++ trunk/Chapter 06/laplacianZC.h (nonexistent) |
@@ -1,154 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 6 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined LAPLACEZC |
-#define LAPLACEZC |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class LaplacianZC { |
- |
- private: |
- |
- // original image |
- cv::Mat img; |
- |
- // 32-bit float image containing the Laplacian |
- cv::Mat laplace; |
- // Aperture size of the laplacian kernel |
- int aperture; |
- |
- public: |
- |
- LaplacianZC() : aperture(3) {} |
- |
- // Set the aperture size of the kernel |
- void setAperture(int a) { |
- |
- aperture= a; |
- } |
- |
- // Get the aperture size of the kernel |
- int getAperture() const { |
- |
- return aperture; |
- } |
- |
- // Compute the floating point Laplacian |
- cv::Mat computeLaplacian(const cv::Mat& image) { |
- |
- |
- // Compute Laplacian |
- cv::Laplacian(image,laplace,CV_32F,aperture); |
- |
- // Keep local copy of the image |
- // (used for zero-crossings) |
- img= image.clone(); |
- |
- return laplace; |
- } |
- |
- // Get the Laplacian result in 8-bit image |
- // zero corresponds to gray level 128 |
- // if no scale is provided, then the max value will be |
- // scaled to intensity 255 |
- // You must call computeLaplacian before calling this method |
- cv::Mat getLaplacianImage(double scale=-1.0) { |
- |
- if (scale<0) { |
- |
- double lapmin, lapmax; |
- cv::minMaxLoc(laplace,&lapmin,&lapmax); |
- |
- scale= 127/ std::max(-lapmin,lapmax); |
- } |
- |
- cv::Mat laplaceImage; |
- laplace.convertTo(laplaceImage,CV_8U,scale,128); |
- |
- return laplaceImage; |
- } |
- |
- // Get a binary image of the zero-crossings |
- // if the product of the two adjascent pixels is |
- // less than threshold then this zero-crossing will be ignored |
- cv::Mat getZeroCrossings(float threshold=1.0) { |
- |
- // Create the iterators |
- cv::Mat_<float>::const_iterator it= laplace.begin<float>()+laplace.step1(); |
- cv::Mat_<float>::const_iterator itend= laplace.end<float>(); |
- cv::Mat_<float>::const_iterator itup= laplace.begin<float>(); |
- |
- // Binary image initialize to white |
- cv::Mat binary(laplace.size(),CV_8U,cv::Scalar(255)); |
- cv::Mat_<uchar>::iterator itout= binary.begin<uchar>()+binary.step1(); |
- |
- // negate the input threshold value |
- threshold *= -1.0; |
- |
- for ( ; it!= itend; ++it, ++itup, ++itout) { |
- |
- // if the product of two adjascent pixel is negative |
- // then there is a sign change |
- if (*it * *(it-1) < threshold) |
- *itout= 0; // horizontal zero-crossing |
- else if (*it * *itup < threshold) |
- *itout= 0; // vertical zero-crossing |
- } |
- |
- return binary; |
- } |
- |
- // Get a binary image of the zero-crossings |
- // if the product of the two adjacent pixels is |
- // less than threshold then this zero-crossing will be ignored |
- cv::Mat getZeroCrossingsWithSobel(float threshold) { |
- |
- cv::Mat sx; |
- cv::Sobel(img,sx,CV_32F,1,0,1); |
- cv::Mat sy; |
- cv::Sobel(img,sy,CV_32F,0,1,1); |
- |
- // Create the iterators |
- cv::Mat_<float>::const_iterator it= laplace.begin<float>()+laplace.step1(); |
- cv::Mat_<float>::const_iterator itend= laplace.end<float>(); |
- cv::Mat_<float>::const_iterator itup= laplace.begin<float>(); |
- cv::Mat_<float>::const_iterator itx= sx.begin<float>()+sx.step1(); |
- cv::Mat_<float>::const_iterator ity= sy.begin<float>()+sy.step1(); |
- |
- // Binary image initialize to white |
- cv::Mat binary(laplace.size(),CV_8U,cv::Scalar(255)); |
- cv::Mat_<uchar>::iterator itout= binary.begin<uchar>()+binary.step1(); |
- |
- for ( ; it!= itend; ++it, ++itup, ++itout, ++itx, ++ity) { |
- |
- // if the product of two adjacent pixel is negative |
- // then there is a sign change |
- if (*it * *(it-1) < 0.0 && fabs(*ity) > threshold) |
- *itout= 0; // horizontal zero-crossing |
- else if (*it * *itup < 0.0 && fabs(*ity) > threshold) |
- *itout= 0; // vertical zero-crossing |
- } |
- |
- return binary; |
- } |
- |
-}; |
- |
- |
-#endif |
/trunk/Chapter 06/laplacianZC.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 06/filters.cpp |
=================================================================== |
--- trunk/Chapter 06/filters.cpp (revision 9) |
+++ trunk/Chapter 06/filters.cpp (nonexistent) |
@@ -1,135 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 6 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../boldt.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Original Image"); |
- cv::imshow("Original Image",image); |
- |
- // Blur the image |
- cv::Mat result; |
- cv::GaussianBlur(image,result,cv::Size(5,5),1.5); |
- |
- // Display the blurred image |
- cv::namedWindow("Gaussian filtered Image"); |
- cv::imshow("Gaussian filtered Image",result); |
- |
- // Get the gaussian kernel (1.5) |
- cv::Mat gauss= cv::getGaussianKernel(9,1.5,CV_32F); |
- |
- // Display kernel values |
- cv::Mat_<float>::const_iterator it= gauss.begin<float>(); |
- cv::Mat_<float>::const_iterator itend= gauss.end<float>(); |
- std::cout << "["; |
- for ( ; it!= itend; ++it) { |
- std::cout << *it << " "; |
- } |
- std::cout << "]" << std::endl; |
- |
- // Get the gaussian kernel (0.5) |
- gauss= cv::getGaussianKernel(9,0.5,CV_32F); |
- |
- // Display kernel values |
- it= gauss.begin<float>(); |
- itend= gauss.end<float>(); |
- std::cout << "["; |
- for ( ; it!= itend; ++it) { |
- std::cout << *it << " "; |
- } |
- std::cout << "]" << std::endl; |
- |
- // Get the gaussian kernel (2.5) |
- gauss= cv::getGaussianKernel(9,2.5,CV_32F); |
- |
- // Display kernel values |
- it= gauss.begin<float>(); |
- itend= gauss.end<float>(); |
- std::cout << "["; |
- for ( ; it!= itend; ++it) { |
- std::cout << *it << " "; |
- } |
- std::cout << "]" << std::endl; |
- |
- // Get the Deriv kernel (2.5) |
- cv::Mat kx, ky; |
- cv::getDerivKernels(kx,ky,2,2,7,true); |
- |
- // Display kernel values |
- cv::Mat_<float>::const_iterator kit= kx.begin<float>(); |
- cv::Mat_<float>::const_iterator kitend= kx.end<float>(); |
- std::cout << "["; |
- for ( ; kit!= kitend; ++kit) { |
- std::cout << *kit << " "; |
- } |
- std::cout << "]" << std::endl; |
- |
- // Blur the image with a mean filter |
- cv::blur(image,result,cv::Size(5,5)); |
- |
- // Display the blurred image |
- cv::namedWindow("Mean filtered Image"); |
- cv::imshow("Mean filtered Image",result); |
- |
- // Read input image with salt&pepper noise |
- image= cv::imread("../salted.bmp",0); |
- if (!image.data) |
- return 0; |
- |
- // Display the S&P image |
- cv::namedWindow("S&P Image"); |
- cv::imshow("S&P Image",image); |
- |
- // Blur the image with a mean filter |
- cv::blur(image,result,cv::Size(5,5)); |
- |
- // Display the blurred image |
- cv::namedWindow("Mean filtered S&P Image"); |
- cv::imshow("Mean filtered S&P Image",result); |
- |
- // Applying a median filter |
- cv::medianBlur(image,result,5); |
- |
- // Display the blurred image |
- cv::namedWindow("Median filtered S&P Image"); |
- cv::imshow("Median filtered S&P Image",result); |
- |
- // Reduce by 4 the size of the image (the wrong way) |
- image= cv::imread("../boldt.jpg",0); |
- cv::Mat reduced(image.rows/2,image.cols/2,CV_8U); |
- |
- for (int i=0; i<reduced.rows; i++) |
- for (int j=0; j<reduced.cols; j++) |
- reduced.at<uchar>(i,j)= image.at<uchar>(i*2,j*2); |
- |
- // Display the reduced image |
- cv::namedWindow("Badly reduced Image"); |
- cv::imshow("Badly reduced Image",reduced); |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 06/filters.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 07/README.txt |
=================================================================== |
--- trunk/Chapter 07/README.txt (revision 9) |
+++ trunk/Chapter 07/README.txt (nonexistent) |
@@ -1,18 +0,0 @@ |
-This directory contains material supporting chapter 7 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-Files: |
- edgedetector.h |
- linefinder.h |
- contours.cpp |
-correspond to Recipes: |
-Detecting Image Contours with the Canny Operator |
-Detecting Lines in Images with the Hough Transform |
-Fitting a Line to a Set of Points |
- |
-File: |
- blobs.cpp |
-correspond to Recipes: |
-Extracting the ComponentsÂ’ Contours |
-Computing ComponentsÂ’ Shape Descriptors |
/trunk/Chapter 07/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 07/contours.cpp |
=================================================================== |
--- trunk/Chapter 07/contours.cpp (revision 9) |
+++ trunk/Chapter 07/contours.cpp (nonexistent) |
@@ -1,277 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 7 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-#include "linefinder.h" |
-#include "edgedetector.h" |
- |
-#define PI 3.1415926 |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../road.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Original Image"); |
- cv::imshow("Original Image",image); |
- |
- // Compute Sobel |
- EdgeDetector ed; |
- ed.computeSobel(image); |
- |
- // Display the Sobel orientation |
- cv::namedWindow("Sobel (orientation)"); |
- cv::imshow("Sobel (orientation)",ed.getSobelOrientationImage()); |
- cv::imwrite("ori.bmp",ed.getSobelOrientationImage()); |
- |
- // Display the Sobel low threshold |
- cv::namedWindow("Sobel (low threshold)"); |
- cv::imshow("Sobel (low threshold)",ed.getBinaryMap(125)); |
- |
- // Display the Sobel high threshold |
- cv::namedWindow("Sobel (high threshold)"); |
- cv::imshow("Sobel (high threshold)",ed.getBinaryMap(350)); |
- |
- // Apply Canny algorithm |
- cv::Mat contours; |
- cv::Canny(image,contours,125,350); |
- cv::Mat contoursInv; |
- cv::threshold(contours,contoursInv,128,255,cv::THRESH_BINARY_INV); |
- |
- // Display the image of contours |
- cv::namedWindow("Canny Contours"); |
- cv::imshow("Canny Contours",contoursInv); |
- |
- // Create a test image |
- cv::Mat test(200,200,CV_8U,cv::Scalar(0)); |
- cv::line(test,cv::Point(100,0),cv::Point(200,200),cv::Scalar(255)); |
- cv::line(test,cv::Point(0,50),cv::Point(200,200),cv::Scalar(255)); |
- cv::line(test,cv::Point(0,200),cv::Point(200,0),cv::Scalar(255)); |
- cv::line(test,cv::Point(200,0),cv::Point(0,200),cv::Scalar(255)); |
- cv::line(test,cv::Point(100,0),cv::Point(100,200),cv::Scalar(255)); |
- cv::line(test,cv::Point(0,100),cv::Point(200,100),cv::Scalar(255)); |
- |
- // Display the test image |
- cv::namedWindow("Test Image"); |
- cv::imshow("Test Image",test); |
- cv::imwrite("test.bmp",test); |
- |
- // Hough tranform for line detection |
- std::vector<cv::Vec2f> lines; |
- cv::HoughLines(contours,lines,1,PI/180,60); |
- |
- // Draw the lines |
- cv::Mat result(contours.rows,contours.cols,CV_8U,cv::Scalar(255)); |
- image.copyTo(result); |
- |
- std::cout << "Lines detected: " << lines.size() << std::endl; |
- |
- std::vector<cv::Vec2f>::const_iterator it= lines.begin(); |
- while (it!=lines.end()) { |
- |
- float rho= (*it)[0]; // first element is distance rho |
- float theta= (*it)[1]; // second element is angle theta |
- |
- if (theta < PI/4. || theta > 3.*PI/4.) { // ~vertical line |
- |
- // point of intersection of the line with first row |
- cv::Point pt1(rho/cos(theta),0); |
- // point of intersection of the line with last row |
- cv::Point pt2((rho-result.rows*sin(theta))/cos(theta),result.rows); |
- // draw a white line |
- cv::line( result, pt1, pt2, cv::Scalar(255), 1); |
- |
- } else { // ~horizontal line |
- |
- // point of intersection of the line with first column |
- cv::Point pt1(0,rho/sin(theta)); |
- // point of intersection of the line with last column |
- cv::Point pt2(result.cols,(rho-result.cols*cos(theta))/sin(theta)); |
- // draw a white line |
- cv::line( result, pt1, pt2, cv::Scalar(255), 1); |
- } |
- |
- std::cout << "line: (" << rho << "," << theta << ")\n"; |
- |
- ++it; |
- } |
- |
- // Display the detected line image |
- cv::namedWindow("Detected Lines with Hough"); |
- cv::imshow("Detected Lines with Hough",result); |
- |
- // Create LineFinder instance |
- LineFinder ld; |
- |
- // Set probabilistic Hough parameters |
- ld.setLineLengthAndGap(100,20); |
- ld.setMinVote(80); |
- |
- // Detect lines |
- std::vector<cv::Vec4i> li= ld.findLines(contours); |
- ld.drawDetectedLines(image); |
- cv::namedWindow("Detected Lines with HoughP"); |
- cv::imshow("Detected Lines with HoughP",image); |
- |
- std::vector<cv::Vec4i>::const_iterator it2= li.begin(); |
- while (it2!=li.end()) { |
- |
- std::cout << "(" << (*it2)[0] << ","<< (*it2)[1]<< ")-(" |
- << (*it2)[2]<< "," << (*it2)[3] << ")" <<std::endl; |
- |
- ++it2; |
- } |
- |
- // Display one line |
- image= cv::imread("../road.jpg",0); |
- int n=0; |
- cv::line(image, cv::Point(li[n][0],li[n][1]),cv::Point(li[n][2],li[n][3]),cv::Scalar(255),5); |
- cv::namedWindow("One line of the Image"); |
- cv::imshow("One line of the Image",image); |
- |
- // Extract the contour pixels of the first detected line |
- cv::Mat oneline(image.size(),CV_8U,cv::Scalar(0)); |
- cv::line(oneline, cv::Point(li[n][0],li[n][1]),cv::Point(li[n][2],li[n][3]),cv::Scalar(255),5); |
- cv::bitwise_and(contours,oneline,oneline); |
- cv::Mat onelineInv; |
- cv::threshold(oneline,onelineInv,128,255,cv::THRESH_BINARY_INV); |
- cv::namedWindow("One line"); |
- cv::imshow("One line",onelineInv); |
- |
- std::vector<cv::Point> points; |
- |
- // Iterate over the pixels to obtain all point positions |
- for( int y = 0; y < oneline.rows; y++ ) { |
- |
- uchar* rowPtr = oneline.ptr<uchar>(y); |
- |
- for( int x = 0; x < oneline.cols; x++ ) { |
- |
- // if on a contour |
- if (rowPtr[x]) { |
- |
- points.push_back(cv::Point(x,y)); |
- } |
- } |
- } |
- |
- // find the best fitting line |
- cv::Vec4f line; |
- cv::fitLine(cv::Mat(points),line,CV_DIST_L2,0,0.01,0.01); |
- |
- std::cout << "line: (" << line[0] << "," << line[1] << ")(" << line[2] << "," << line[3] << ")\n"; |
- |
- int x0= line[2]; |
- int y0= line[3]; |
- int x1= x0-200*line[0]; |
- int y1= y0-200*line[1]; |
- image= cv::imread("../road.jpg",0); |
- cv::line(image,cv::Point(x0,y0),cv::Point(x1,y1),cv::Scalar(0),3); |
- cv::namedWindow("Estimated line"); |
- cv::imshow("Estimated line",image); |
- |
- // eliminate inconsistent lines |
- ld.removeLinesOfInconsistentOrientations(ed.getOrientation(),0.4,0.1); |
- |
- // Display the detected line image |
- image= cv::imread("../road.jpg",0); |
- ld.drawDetectedLines(image); |
- cv::namedWindow("Detected Lines (2)"); |
- cv::imshow("Detected Lines (2)",image); |
- |
- // Create a Hough accumulator |
- cv::Mat acc(200,180,CV_8U,cv::Scalar(0)); |
- |
- // Choose a point |
- int x=50, y=30; |
- |
- // loop over all angles |
- for (int i=0; i<180; i++) { |
- |
- double theta= i*PI/180.; |
- |
- // find corresponding rho value |
- double rho= x*cos(theta)+y*sin(theta); |
- int j= static_cast<int>(rho+100.5); |
- |
- std::cout << i << "," << j << std::endl; |
- |
- // increment accumulator |
- acc.at<uchar>(j,i)++; |
- } |
- |
- cv::imwrite("hough1.bmp",acc*100); |
- |
- // Choose a second point |
- x=30, y=10; |
- |
- // loop over all angles |
- for (int i=0; i<180; i++) { |
- |
- double theta= i*PI/180.; |
- double rho= x*cos(theta)+y*sin(theta); |
- int j= static_cast<int>(rho+100.5); |
- |
- acc.at<uchar>(j,i)++; |
- } |
- |
- cv::namedWindow("Hough Accumulator"); |
- cv::imshow("Hough Accumulator",acc*100); |
- cv::imwrite("hough2.bmp",acc*100); |
- |
- // Detect circles |
- image= cv::imread("../chariot.jpg",0); |
- cv::GaussianBlur(image,image,cv::Size(5,5),1.5); |
- std::vector<cv::Vec3f> circles; |
- cv::HoughCircles(image, circles, CV_HOUGH_GRADIENT, |
- 2, // accumulator resolution (size of the image / 2) |
- 50, // minimum distance between two circles |
- 200, // Canny high threshold |
- 100, // minimum number of votes |
- 25, 100); // min and max radius |
- |
- std::cout << "Circles: " << circles.size() << std::endl; |
- |
- // Draw the circles |
- image= cv::imread("../chariot.jpg",0); |
- std::vector<cv::Vec3f>::const_iterator itc= circles.begin(); |
- |
- while (itc!=circles.end()) { |
- |
- cv::circle(image, |
- cv::Point((*itc)[0], (*itc)[1]), // circle centre |
- (*itc)[2], // circle radius |
- cv::Scalar(255), // color |
- 2); // thickness |
- |
- ++itc; |
- } |
- |
- cv::namedWindow("Detected Circles"); |
- cv::imshow("Detected Circles",image); |
- |
- cv::waitKey(); |
- return 0; |
-} |
\ No newline at end of file |
/trunk/Chapter 07/contours.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 07/blobs.cpp |
=================================================================== |
--- trunk/Chapter 07/blobs.cpp (revision 9) |
+++ trunk/Chapter 07/blobs.cpp (nonexistent) |
@@ -1,169 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 7 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
- |
-int main() |
-{ |
- // Read input binary image |
- cv::Mat image= cv::imread("../binaryGroup.bmp",0); |
- if (!image.data) |
- return 0; |
- |
- cv::namedWindow("Binary Image"); |
- cv::imshow("Binary Image",image); |
- |
- // Get the contours of the connected components |
- std::vector<std::vector<cv::Point> > contours; |
- cv::findContours(image, |
- contours, // a vector of contours |
- CV_RETR_EXTERNAL, // retrieve the external contours |
- CV_CHAIN_APPROX_NONE); // retrieve all pixels of each contours |
- |
- // Print contours' length |
- std::cout << "Contours: " << contours.size() << std::endl; |
- std::vector<std::vector<cv::Point> >::const_iterator itContours= contours.begin(); |
- for ( ; itContours!=contours.end(); ++itContours) { |
- |
- std::cout << "Size: " << itContours->size() << std::endl; |
- } |
- |
- // draw black contours on white image |
- cv::Mat result(image.size(),CV_8U,cv::Scalar(255)); |
- cv::drawContours(result,contours, |
- -1, // draw all contours |
- cv::Scalar(0), // in black |
- 2); // with a thickness of 2 |
- |
- cv::namedWindow("Contours"); |
- cv::imshow("Contours",result); |
- |
- // Eliminate too short or too long contours |
- int cmin= 100; // minimum contour length |
- int cmax= 1000; // maximum contour length |
- std::vector<std::vector<cv::Point> >::const_iterator itc= contours.begin(); |
- while (itc!=contours.end()) { |
- |
- if (itc->size() < cmin || itc->size() > cmax) |
- itc= contours.erase(itc); |
- else |
- ++itc; |
- } |
- |
- // draw contours on the original image |
- cv::Mat original= cv::imread("../group.jpg"); |
- cv::drawContours(original,contours, |
- -1, // draw all contours |
- cv::Scalar(255,255,255), // in white |
- 2); // with a thickness of 2 |
- |
- cv::namedWindow("Contours on Animals"); |
- cv::imshow("Contours on Animals",original); |
- |
- // Let's now draw black contours on white image |
- result.setTo(cv::Scalar(255)); |
- cv::drawContours(result,contours, |
- -1, // draw all contours |
- cv::Scalar(0), // in black |
- 1); // with a thickness of 1 |
- image= cv::imread("../binaryGroup.bmp",0); |
- |
- // testing the bounding box |
- cv::Rect r0= cv::boundingRect(cv::Mat(contours[0])); |
- cv::rectangle(result,r0,cv::Scalar(0),2); |
- |
- // testing the enclosing circle |
- float radius; |
- cv::Point2f center; |
- cv::minEnclosingCircle(cv::Mat(contours[1]),center,radius); |
- cv::circle(result,cv::Point(center),static_cast<int>(radius),cv::Scalar(0),2); |
- |
-// cv::RotatedRect rrect= cv::fitEllipse(cv::Mat(contours[1])); |
-// cv::ellipse(result,rrect,cv::Scalar(0),2); |
- |
- // testing the approximate polygon |
- std::vector<cv::Point> poly; |
- cv::approxPolyDP(cv::Mat(contours[2]),poly,5,true); |
- |
- std::cout << "Polygon size: " << poly.size() << std::endl; |
- |
- // Iterate over each segment and draw it |
- std::vector<cv::Point>::const_iterator itp= poly.begin(); |
- while (itp!=(poly.end()-1)) { |
- cv::line(result,*itp,*(itp+1),cv::Scalar(0),2); |
- ++itp; |
- } |
- // last point linked to first point |
- cv::line(result,*(poly.begin()),*(poly.end()-1),cv::Scalar(20),2); |
- |
- // testing the convex hull |
- std::vector<cv::Point> hull; |
- cv::convexHull(cv::Mat(contours[3]),hull); |
- |
- // Iterate over each segment and draw it |
- std::vector<cv::Point>::const_iterator it= hull.begin(); |
- while (it!=(hull.end()-1)) { |
- cv::line(result,*it,*(it+1),cv::Scalar(0),2); |
- ++it; |
- } |
- // last point linked to first point |
- cv::line(result,*(hull.begin()),*(hull.end()-1),cv::Scalar(20),2); |
- |
- // testing the moments |
- |
- // iterate over all contours |
- itc= contours.begin(); |
- while (itc!=contours.end()) { |
- |
- // compute all moments |
- cv::Moments mom= cv::moments(cv::Mat(*itc++)); |
- |
- // draw mass center |
- cv::circle(result, |
- // position of mass center converted to integer |
- cv::Point(mom.m10/mom.m00,mom.m01/mom.m00), |
- 2,cv::Scalar(0),2); // draw black dot |
- } |
- |
- cv::namedWindow("Some Shape descriptors"); |
- cv::imshow("Some Shape descriptors",result); |
- |
- // New call to findContours but with CV_RETR_LIST flag |
- image= cv::imread("../binaryGroup.bmp",0); |
- |
- // Get the contours of the connected components |
- cv::findContours(image, |
- contours, // a vector of contours |
- CV_RETR_LIST, // retrieve the external and internal contours |
- CV_CHAIN_APPROX_NONE); // retrieve all pixels of each contours |
- |
- // draw black contours on white image |
- result.setTo(cv::Scalar(255)); |
- cv::drawContours(result,contours, |
- -1, // draw all contours |
- cv::Scalar(0), // in black |
- 2); // with a thickness of 2 |
- cv::namedWindow("All Contours"); |
- cv::imshow("All Contours",result); |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 07/blobs.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 07/edgedetector.h |
=================================================================== |
--- trunk/Chapter 07/edgedetector.h (revision 9) |
+++ trunk/Chapter 07/edgedetector.h (nonexistent) |
@@ -1,121 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 6 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined SOBELEDGES |
-#define SOBELEDGES |
- |
-#define PI 3.1415926 |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
- |
-class EdgeDetector { |
- |
- private: |
- |
- // original image |
- cv::Mat img; |
- |
- // 16-bit signed int image |
- cv::Mat sobel; |
- |
- // Aperture size of the Sobel kernel |
- int aperture; |
- |
- // Sobel magnitude |
- cv::Mat sobelMagnitude; |
- |
- // Sobel orientation |
- cv::Mat sobelOrientation; |
- |
- public: |
- |
- EdgeDetector() : aperture(3) {} |
- |
- // Set the aperture size of the kernel |
- void setAperture(int a) { |
- |
- aperture= a; |
- } |
- |
- // Get the aperture size of the kernel |
- int getAperture() const { |
- |
- return aperture; |
- } |
- |
- // Compute the Sobel |
- void computeSobel(const cv::Mat& image, cv::Mat &sobelX=cv::Mat(), cv::Mat &sobelY=cv::Mat()) { |
- |
- // Compute Sobel |
- cv::Sobel(image,sobelX,CV_32F,1,0,aperture); |
- cv::Sobel(image,sobelY,CV_32F,0,1,aperture); |
- |
- // Compute magnitude and orientation |
- cv::cartToPolar(sobelX,sobelY,sobelMagnitude,sobelOrientation); |
- } |
- |
- // Get Sobel magnitude |
- // Make a copy if called more than once |
- cv::Mat getMagnitude() { |
- |
- return sobelMagnitude; |
- } |
- |
- // Get Sobel orientation |
- // Make a copy if called more than once |
- cv::Mat getOrientation() { |
- |
- return sobelOrientation; |
- } |
- |
- // Get a thresholded binary map |
- cv::Mat getBinaryMap(double threshold) { |
- |
- cv::Mat bin; |
- cv::threshold(sobelMagnitude,bin,threshold,255,cv::THRESH_BINARY_INV); |
- |
- return bin; |
- } |
- |
- // Get a CV_8U image of the Sobel |
- cv::Mat getSobelImage() { |
- |
- cv::Mat bin; |
- |
- double minval, maxval; |
- cv::minMaxLoc(sobelMagnitude,&minval,&maxval); |
- sobelMagnitude.convertTo(bin,CV_8U,255/maxval); |
- |
- return bin; |
- } |
- |
- // Get a CV_8U image of the Sobel orientation |
- // 1 gray-level = 2 degrees |
- cv::Mat getSobelOrientationImage() { |
- |
- cv::Mat bin; |
- |
- sobelOrientation.convertTo(bin,CV_8U,90/PI); |
- |
- return bin; |
- } |
- |
-}; |
- |
- |
-#endif |
/trunk/Chapter 07/edgedetector.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 07/linefinder.h |
=================================================================== |
--- trunk/Chapter 07/linefinder.h (revision 9) |
+++ trunk/Chapter 07/linefinder.h (nonexistent) |
@@ -1,157 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 7 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined LINEF |
-#define LINEF |
- |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#define PI 3.1415926 |
- |
-class LineFinder { |
- |
- private: |
- |
- // original image |
- cv::Mat img; |
- |
- // vector containing the end points |
- // of the detected lines |
- std::vector<cv::Vec4i> lines; |
- |
- // accumulator resolution parameters |
- double deltaRho; |
- double deltaTheta; |
- |
- // minimum number of votes that a line |
- // must receive before being considered |
- int minVote; |
- |
- // min length for a line |
- double minLength; |
- |
- // max allowed gap along the line |
- double maxGap; |
- |
- public: |
- |
- // Default accumulator resolution is 1 pixel by 1 degree |
- // no gap, no mimimum length |
- LineFinder() : deltaRho(1), deltaTheta(PI/180), minVote(10), minLength(0.), maxGap(0.) {} |
- |
- // Set the resolution of the accumulator |
- void setAccResolution(double dRho, double dTheta) { |
- |
- deltaRho= dRho; |
- deltaTheta= dTheta; |
- } |
- |
- // Set the minimum number of votes |
- void setMinVote(int minv) { |
- |
- minVote= minv; |
- } |
- |
- // Set line length and gap |
- void setLineLengthAndGap(double length, double gap) { |
- |
- minLength= length; |
- maxGap= gap; |
- } |
- |
- // Apply probabilistic Hough Transform |
- std::vector<cv::Vec4i> findLines(cv::Mat& binary) { |
- |
- lines.clear(); |
- cv::HoughLinesP(binary,lines,deltaRho,deltaTheta,minVote, minLength, maxGap); |
- |
- return lines; |
- } |
- |
- // Draw the detected lines on an image |
- void drawDetectedLines(cv::Mat &image, cv::Scalar color=cv::Scalar(255,255,255)) { |
- |
- // Draw the lines |
- std::vector<cv::Vec4i>::const_iterator it2= lines.begin(); |
- |
- while (it2!=lines.end()) { |
- |
- cv::Point pt1((*it2)[0],(*it2)[1]); |
- cv::Point pt2((*it2)[2],(*it2)[3]); |
- |
- cv::line( image, pt1, pt2, color); |
- |
- ++it2; |
- } |
- } |
- |
- // Eliminates lines that do not have an orientation equals to |
- // the ones specified in the input matrix of orientations |
- // At least the given percentage of pixels on the line must |
- // be within plus or minus delta of the corresponding orientation |
- std::vector<cv::Vec4i> removeLinesOfInconsistentOrientations( |
- const cv::Mat &orientations, double percentage, double delta) { |
- |
- std::vector<cv::Vec4i>::iterator it= lines.begin(); |
- |
- // check all lines |
- while (it!=lines.end()) { |
- |
- // end points |
- int x1= (*it)[0]; |
- int y1= (*it)[1]; |
- int x2= (*it)[2]; |
- int y2= (*it)[3]; |
- |
- // line orientation + 90o to get the parallel line |
- double ori1= atan2(static_cast<double>(y1-y2),static_cast<double>(x1-x2))+PI/2; |
- if (ori1>PI) ori1= ori1-2*PI; |
- |
- double ori2= atan2(static_cast<double>(y2-y1),static_cast<double>(x2-x1))+PI/2; |
- if (ori2>PI) ori2= ori2-2*PI; |
- |
- // for all points on the line |
- cv::LineIterator lit(orientations,cv::Point(x1,y1),cv::Point(x2,y2)); |
- int i,count=0; |
- for(i = 0, count=0; i < lit.count; i++, ++lit) { |
- |
- float ori= *(reinterpret_cast<float *>(*lit)); |
- |
- // is line orientation similar to gradient orientation ? |
- if (std::min(fabs(ori-ori1),fabs(ori-ori2))<delta) |
- count++; |
- |
- } |
- |
- double consistency= count/static_cast<double>(i); |
- |
- // set to zero lines of inconsistent orientation |
- if (consistency < percentage) { |
- |
- (*it)[0]=(*it)[1]=(*it)[2]=(*it)[3]=0; |
- |
- } |
- |
- ++it; |
- } |
- |
- return lines; |
- } |
-}; |
- |
- |
-#endif |
/trunk/Chapter 07/linefinder.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 08/harrisDetector.h |
=================================================================== |
--- trunk/Chapter 08/harrisDetector.h (revision 9) |
+++ trunk/Chapter 08/harrisDetector.h (nonexistent) |
@@ -1,146 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 8 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined HARRISD |
-#define HARRISD |
- |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
- |
-class HarrisDetector { |
- |
- private: |
- |
- // 32-bit float image of corner strength |
- cv::Mat cornerStrength; |
- // 32-bit float image of thresholded corners |
- cv::Mat cornerTh; |
- // image of local maxima (internal) |
- cv::Mat localMax; |
- // size of neighbourhood for derivatives smoothing |
- int neighbourhood; |
- // aperture for gradient computation |
- int aperture; |
- // Harris parameter |
- double k; |
- // maximum strength for threshold computation |
- double maxStrength; |
- // calculated threshold (internal) |
- double threshold; |
- // size of neighbourhood for non-max suppression |
- int nonMaxSize; |
- // kernel for non-max suppression |
- cv::Mat kernel; |
- |
- public: |
- |
- HarrisDetector() : neighbourhood(3), aperture(3), k(0.1), maxStrength(0.0), threshold(0.01), nonMaxSize(3) { |
- |
- setLocalMaxWindowSize(nonMaxSize); |
- } |
- |
- // Create kernel used in non-maxima suppression |
- void setLocalMaxWindowSize(int size) { |
- |
- nonMaxSize= size; |
- kernel.create(nonMaxSize,nonMaxSize,CV_8U); |
- } |
- |
- // Compute Harris corners |
- void detect(const cv::Mat& image) { |
- |
- // Harris computation |
- cv::cornerHarris(image,cornerStrength, |
- neighbourhood,// neighborhood size |
- aperture, // aperture size |
- k); // Harris parameter |
- |
- // internal threshold computation |
- double minStrength; // not used |
- cv::minMaxLoc(cornerStrength,&minStrength,&maxStrength); |
- |
- // local maxima detection |
- cv::Mat dilated; // temporary image |
- cv::dilate(cornerStrength,dilated,cv::Mat()); |
- cv::compare(cornerStrength,dilated,localMax,cv::CMP_EQ); |
- } |
- |
- // Get the corner map from the computed Harris values |
- cv::Mat getCornerMap(double qualityLevel) { |
- |
- cv::Mat cornerMap; |
- |
- // thresholding the corner strength |
- threshold= qualityLevel*maxStrength; |
- cv::threshold(cornerStrength,cornerTh,threshold,255,cv::THRESH_BINARY); |
- |
- // convert to 8-bit image |
- cornerTh.convertTo(cornerMap,CV_8U); |
- |
- // non-maxima suppression |
- cv::bitwise_and(cornerMap,localMax,cornerMap); |
- |
- return cornerMap; |
- } |
- |
- // Get the feature points vector from the computed Harris values |
- void getCorners(std::vector<cv::Point> &points, double qualityLevel) { |
- |
- // Get the corner map |
- cv::Mat cornerMap= getCornerMap(qualityLevel); |
- // Get the corners |
- getCorners(points, cornerMap); |
- } |
- |
- // Get the feature points vector from the computed corner map |
- void getCorners(std::vector<cv::Point> &points, const cv::Mat& cornerMap) { |
- |
- // Iterate over the pixels to obtain all feature points |
- for( int y = 0; y < cornerMap.rows; y++ ) { |
- |
- const uchar* rowPtr = cornerMap.ptr<uchar>(y); |
- |
- for( int x = 0; x < cornerMap.cols; x++ ) { |
- |
- // if it is a feature point |
- if (rowPtr[x]) { |
- |
- points.push_back(cv::Point(x,y)); |
- } |
- } |
- } |
- } |
- |
- // Draw circles at feature point locations on an image |
- void drawOnImage(cv::Mat &image, const std::vector<cv::Point> &points, cv::Scalar color= cv::Scalar(255,255,255), int radius=3, int thickness=2) { |
- |
- std::vector<cv::Point>::const_iterator it= points.begin(); |
- |
- // for all corners |
- while (it!=points.end()) { |
- |
- // draw a circle at each corner location |
- cv::circle(image,*it,radius,color,thickness); |
- ++it; |
- } |
- } |
-}; |
- |
-#endif |
/trunk/Chapter 08/harrisDetector.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 08/README.txt |
=================================================================== |
--- trunk/Chapter 08/README.txt (revision 9) |
+++ trunk/Chapter 08/README.txt (nonexistent) |
@@ -1,16 +0,0 @@ |
-This directory contains material supporting chapter 8 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-Files: |
- harrisDetector.h |
- interestPoints.cpp |
-correspond to Recipes: |
-Detecting Harris Corners |
-Detecting Fast Features |
-Detecting the Scale-Invariant SURF Features |
- |
-File: |
- blobs.cpp |
-correspond to Recipe: |
-Describing SURF Features |
\ No newline at end of file |
/trunk/Chapter 08/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 08/interestPoints.cpp |
=================================================================== |
--- trunk/Chapter 08/interestPoints.cpp (revision 9) |
+++ trunk/Chapter 08/interestPoints.cpp (nonexistent) |
@@ -1,184 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 8 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
- |
-#include "harrisDetector.h" |
- |
-int main() |
-{ |
- // Read input image |
- cv::Mat image= cv::imread("../church01.jpg",0); |
- if (!image.data) |
- return 0; |
- |
- // Display the image |
- cv::namedWindow("Original Image"); |
- cv::imshow("Original Image",image); |
- |
- // Detect Harris Corners |
- cv::Mat cornerStrength; |
- cv::cornerHarris(image,cornerStrength, |
- 3, // neighborhood size |
- 3, // aperture size |
- 0.01); // Harris parameter |
- |
- // threshold the corner strengths |
- cv::Mat harrisCorners; |
- double threshold= 0.0001; |
- cv::threshold(cornerStrength,harrisCorners, |
- threshold,255,cv::THRESH_BINARY_INV); |
- |
- // Display the corners |
- cv::namedWindow("Harris Corner Map"); |
- cv::imshow("Harris Corner Map",harrisCorners); |
- |
- // Create Harris detector instance |
- HarrisDetector harris; |
- // Compute Harris values |
- harris.detect(image); |
- // Detect Harris corners |
- std::vector<cv::Point> pts; |
- harris.getCorners(pts,0.01); |
- // Draw Harris corners |
- harris.drawOnImage(image,pts); |
- |
- // Display the corners |
- cv::namedWindow("Harris Corners"); |
- cv::imshow("Harris Corners",image); |
- |
- // Read input image |
- image= cv::imread("../church01.jpg",0); |
- |
- // Compute good features to track |
- std::vector<cv::Point2f> corners; |
- cv::goodFeaturesToTrack(image,corners, |
- 500, // maximum number of corners to be returned |
- 0.01, // quality level |
- 10); // minimum allowed distance between points |
- |
- // for all corners |
- std::vector<cv::Point2f>::const_iterator it= corners.begin(); |
- while (it!=corners.end()) { |
- |
- // draw a circle at each corner location |
- cv::circle(image,*it,3,cv::Scalar(255,255,255),2); |
- ++it; |
- } |
- |
- // Display the corners |
- cv::namedWindow("Good Features to Track"); |
- cv::imshow("Good Features to Track",image); |
- |
- // Read input image |
- image= cv::imread("../church01.jpg",0); |
- |
- // vector of keypoints |
- std::vector<cv::KeyPoint> keypoints; |
- // Construction of the Good Feature to Track detector |
- cv::GoodFeaturesToTrackDetector gftt( |
- 500, // maximum number of corners to be returned |
- 0.01, // quality level |
- 10); // minimum allowed distance between points |
- // point detection using FeatureDetector method |
- gftt.detect(image,keypoints); |
- |
- cv::drawKeypoints(image, // original image |
- keypoints, // vector of keypoints |
- image, // the resulting image |
- cv::Scalar(255,255,255), // color of the points |
- cv::DrawMatchesFlags::DRAW_OVER_OUTIMG); //drawing flag |
- |
- // Display the corners |
- cv::namedWindow("Good Features to Track Detector"); |
- cv::imshow("Good Features to Track Detector",image); |
- |
- // Read input image |
- image= cv::imread("../church01.jpg",0); |
- |
- keypoints.clear(); |
- cv::FastFeatureDetector fast(40); |
- fast.detect(image,keypoints); |
- |
- cv::drawKeypoints(image,keypoints,image,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_OVER_OUTIMG); |
- |
- // Display the corners |
- cv::namedWindow("FAST Features"); |
- cv::imshow("FAST Features",image); |
- |
- // Read input image |
- image= cv::imread("../church03.jpg",0); |
- |
- keypoints.clear(); |
- // Construct the SURF feature detector object |
- cv::SurfFeatureDetector surf(2500); |
- // Detect the SURF features |
- surf.detect(image,keypoints); |
- |
- cv::Mat featureImage; |
- cv::drawKeypoints(image,keypoints,featureImage,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); |
- |
- // Display the corners |
- cv::namedWindow("SURF Features"); |
- cv::imshow("SURF Features",featureImage); |
- |
- // Read input image |
- image= cv::imread("../church01.jpg",0); |
- |
- keypoints.clear(); |
- // Construct the SURF feature detector object |
- cv::SiftFeatureDetector sift( |
- 0.03, // feature threshold |
- 10.); // threshold to reduce |
- // sensitivity to lines |
- |
- // Detect the SURF features |
- sift.detect(image,keypoints); |
- |
- cv::drawKeypoints(image,keypoints,featureImage,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); |
- |
- // Display the corners |
- cv::namedWindow("SIFT Features"); |
- cv::imshow("SIFT Features",featureImage); |
- |
- // Read input image |
- image= cv::imread("../church01.jpg",0); |
- |
- keypoints.clear(); |
- |
- cv::MserFeatureDetector mser; |
- mser.detect(image,keypoints); |
- |
- // Draw the keypoints with scale and orientation information |
- cv::drawKeypoints(image, // original image |
- keypoints, // vector of keypoints |
- featureImage, // the resulting image |
- cv::Scalar(255,255,255), // color of the points |
- cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); //drawing flag |
- |
- // Display the corners |
- cv::namedWindow("MSER Features"); |
- cv::imshow("MSER Features",featureImage); |
- |
- cv::waitKey(); |
- return 0; |
-} |
\ No newline at end of file |
/trunk/Chapter 08/interestPoints.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 08/tracking.cpp |
=================================================================== |
--- trunk/Chapter 08/tracking.cpp (revision 9) |
+++ trunk/Chapter 08/tracking.cpp (nonexistent) |
@@ -1,108 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 8 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
- |
-int main() |
-{ |
- // Read input images |
- cv::Mat image1= cv::imread("../church01.jpg",0); |
- cv::Mat image2= cv::imread("../church02.jpg",0); |
- if (!image1.data || !image2.data) |
- return 0; |
- |
- // Display the images |
- cv::namedWindow("Right Image"); |
- cv::imshow("Right Image",image1); |
- cv::namedWindow("Left Image"); |
- cv::imshow("Left Image",image2); |
- |
- // vector of keypoints |
- std::vector<cv::KeyPoint> keypoints1; |
- std::vector<cv::KeyPoint> keypoints2; |
- |
- // Construction of the SURF feature detector |
- cv::SurfFeatureDetector surf(3000); |
- |
- // Detection of the SURF features |
- surf.detect(image1,keypoints1); |
- surf.detect(image2,keypoints2); |
- |
- std::cout << "Number of SURF points (1): " << keypoints1.size() << std::endl; |
- std::cout << "Number of SURF points (2): " << keypoints2.size() << std::endl; |
- |
- // Draw the kepoints |
- cv::Mat imageKP; |
- cv::drawKeypoints(image1,keypoints1,imageKP,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); |
- cv::namedWindow("Right SURF Features"); |
- cv::imshow("Right SURF Features",imageKP); |
- cv::drawKeypoints(image2,keypoints2,imageKP,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); |
- cv::namedWindow("Left SURF Features"); |
- cv::imshow("Left SURF Features",imageKP); |
- |
- // Construction of the SURF descriptor extractor |
- cv::SurfDescriptorExtractor surfDesc; |
- |
- // Extraction of the SURF descriptors |
- cv::Mat descriptors1, descriptors2; |
- surfDesc.compute(image1,keypoints1,descriptors1); |
- surfDesc.compute(image2,keypoints2,descriptors2); |
- |
- std::cout << "descriptor matrix size: " << descriptors1.rows << " by " << descriptors1.cols << std::endl; |
- |
- // Construction of the matcher |
- cv::BruteForceMatcher<cv::L2<float>> matcher; |
- |
- // Match the two image descriptors |
- std::vector<cv::DMatch> matches; |
- matcher.match(descriptors1,descriptors2, matches); |
- |
- std::cout << "Number of matched points: " << matches.size() << std::endl; |
- |
- std::nth_element(matches.begin(), // initial position |
- matches.begin()+24, // position of the sorted element |
- matches.end()); // end position |
- // remove all elements after the 25th |
- matches.erase(matches.begin()+25, matches.end()); |
- |
- cv::Mat imageMatches; |
- cv::drawMatches(image1,keypoints1, // 1st image and its keypoints |
- image2,keypoints2, // 2nd image and its keypoints |
- matches, // the matches |
- imageMatches, // the image produced |
- cv::Scalar(255,255,255)); // color of the lines |
- cv::namedWindow("Matches"); |
- cv::imshow("Matches",imageMatches); |
- |
- cv::waitKey(); |
- return 0; |
- |
- int size=7; |
- cv::Mat imaf1; |
- image1.convertTo(imaf1,CV_32F); |
- |
- cv::Mat imaf2; |
- image2.convertTo(imaf2,CV_32F); |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 08/tracking.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/calibrate.cpp |
=================================================================== |
--- trunk/Chapter 09/calibrate.cpp (revision 9) |
+++ trunk/Chapter 09/calibrate.cpp (nonexistent) |
@@ -1,85 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 9 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
- \*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <iomanip> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
- |
-#include "CameraCalibrator.h" |
- |
-int |
-main() |
-{ |
- |
- cv::namedWindow("Image"); |
- cv::Mat image; |
- std::vector<std::string> filelist; |
- |
- // generate list of chessboard image filename |
- for (int i = 1; i <= 20; i++) |
- { |
- |
- std::stringstream str; |
- str << "../chessboards/chessboard" << std::setw(2) << std::setfill('0') |
- << i << ".jpg"; |
- std::cout << str.str() << std::endl; |
- |
- filelist.push_back(str.str()); |
- image = cv::imread(str.str(), 0); |
- cv::imshow("Image", image); |
- |
- cv::waitKey(100); |
- } |
- |
- // Create calibrator object |
- CameraCalibrator cameraCalibrator; |
- // add the corners from the chessboard |
- cv::Size boardSize(6, 4); |
- cameraCalibrator.addChessboardPoints(filelist, // filenames of chessboard image |
- boardSize); // size of chessboard |
- // calibrate the camera |
- // cameraCalibrator.setCalibrationFlag(true,true); |
- cameraCalibrator.calibrate(image.size()); |
- |
- // Image Undistortion |
- image = cv::imread(filelist[6]); |
- cv::Mat uImage = cameraCalibrator.remap(image); |
- |
- // display camera matrix |
- cv::Mat cameraMatrix = cameraCalibrator.getCameraMatrix(); |
- std::cout << " Camera intrinsic: " << cameraMatrix.rows << "x" |
- << cameraMatrix.cols << std::endl; |
- std::cout << cameraMatrix.at<double>(0, 0) << " " |
- << cameraMatrix.at<double>(0, 1) << " " << cameraMatrix.at<double>(0, 2) |
- << std::endl; |
- std::cout << cameraMatrix.at<double>(1, 0) << " " |
- << cameraMatrix.at<double>(1, 1) << " " << cameraMatrix.at<double>(1, 2) |
- << std::endl; |
- std::cout << cameraMatrix.at<double>(2, 0) << " " |
- << cameraMatrix.at<double>(2, 1) << " " << cameraMatrix.at<double>(2, 2) |
- << std::endl; |
- |
- imshow("Original Image", image); |
- imshow("Undistorted Image", uImage); |
- |
- cv::waitKey(); |
- return 0; |
-} |
/trunk/Chapter 09/calibrate.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/matcher.h |
=================================================================== |
--- trunk/Chapter 09/matcher.h (revision 9) |
+++ trunk/Chapter 09/matcher.h (nonexistent) |
@@ -1,288 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 9 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#if !defined MATCHER |
-#define MATCHER |
- |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
- |
-class RobustMatcher { |
- |
- private: |
- |
- // pointer to the feature point detector object |
- cv::Ptr<cv::FeatureDetector> detector; |
- // pointer to the feature descriptor extractor object |
- cv::Ptr<cv::DescriptorExtractor> extractor; |
- float ratio; // max ratio between 1st and 2nd NN |
- bool refineF; // if true will refine the F matrix |
- double distance; // min distance to epipolar |
- double confidence; // confidence level (probability) |
- |
- public: |
- |
- RobustMatcher() : ratio(0.65f), refineF(true), confidence(0.99), distance(3.0) { |
- |
- // SURF is the default feature |
- detector= new cv::SurfFeatureDetector(); |
- extractor= new cv::SurfDescriptorExtractor(); |
- } |
- |
- // Set the feature detector |
- void setFeatureDetector(cv::Ptr<cv::FeatureDetector>& detect) { |
- |
- detector= detect; |
- } |
- |
- // Set descriptor extractor |
- void setDescriptorExtractor(cv::Ptr<cv::DescriptorExtractor>& desc) { |
- |
- extractor= desc; |
- } |
- |
- // Set the minimum distance to epipolar in RANSAC |
- void setMinDistanceToEpipolar(double d) { |
- |
- distance= d; |
- } |
- |
- // Set confidence level in RANSAC |
- void setConfidenceLevel(double c) { |
- |
- confidence= c; |
- } |
- |
- // Set the NN ratio |
- void setRatio(float r) { |
- |
- ratio= r; |
- } |
- |
- // if you want the F matrix to be recalculated |
- void refineFundamental(bool flag) { |
- |
- refineF= flag; |
- } |
- |
- // Clear matches for which NN ratio is > than threshold |
- // return the number of removed points |
- // (corresponding entries being cleared, i.e. size will be 0) |
- int ratioTest(std::vector<std::vector<cv::DMatch>>& matches) { |
- |
- int removed=0; |
- |
- // for all matches |
- for (std::vector<std::vector<cv::DMatch>>::iterator matchIterator= matches.begin(); |
- matchIterator!= matches.end(); ++matchIterator) { |
- |
- // if 2 NN has been identified |
- if (matchIterator->size() > 1) { |
- |
- // check distance ratio |
- if ((*matchIterator)[0].distance/(*matchIterator)[1].distance > ratio) { |
- |
- matchIterator->clear(); // remove match |
- removed++; |
- } |
- |
- } else { // does not have 2 neighbours |
- |
- matchIterator->clear(); // remove match |
- removed++; |
- } |
- } |
- |
- return removed; |
- } |
- |
- // Insert symmetrical matches in symMatches vector |
- void symmetryTest(const std::vector<std::vector<cv::DMatch>>& matches1, |
- const std::vector<std::vector<cv::DMatch>>& matches2, |
- std::vector<cv::DMatch>& symMatches) { |
- |
- // for all matches image 1 -> image 2 |
- for (std::vector<std::vector<cv::DMatch>>::const_iterator matchIterator1= matches1.begin(); |
- matchIterator1!= matches1.end(); ++matchIterator1) { |
- |
- if (matchIterator1->size() < 2) // ignore deleted matches |
- continue; |
- |
- // for all matches image 2 -> image 1 |
- for (std::vector<std::vector<cv::DMatch>>::const_iterator matchIterator2= matches2.begin(); |
- matchIterator2!= matches2.end(); ++matchIterator2) { |
- |
- if (matchIterator2->size() < 2) // ignore deleted matches |
- continue; |
- |
- // Match symmetry test |
- if ((*matchIterator1)[0].queryIdx == (*matchIterator2)[0].trainIdx && |
- (*matchIterator2)[0].queryIdx == (*matchIterator1)[0].trainIdx) { |
- |
- // add symmetrical match |
- symMatches.push_back(cv::DMatch((*matchIterator1)[0].queryIdx, |
- (*matchIterator1)[0].trainIdx, |
- (*matchIterator1)[0].distance)); |
- break; // next match in image 1 -> image 2 |
- } |
- } |
- } |
- } |
- |
- // Identify good matches using RANSAC |
- // Return fundemental matrix |
- cv::Mat ransacTest(const std::vector<cv::DMatch>& matches, |
- const std::vector<cv::KeyPoint>& keypoints1, |
- const std::vector<cv::KeyPoint>& keypoints2, |
- std::vector<cv::DMatch>& outMatches) { |
- |
- // Convert keypoints into Point2f |
- std::vector<cv::Point2f> points1, points2; |
- for (std::vector<cv::DMatch>::const_iterator it= matches.begin(); |
- it!= matches.end(); ++it) { |
- |
- // Get the position of left keypoints |
- float x= keypoints1[it->queryIdx].pt.x; |
- float y= keypoints1[it->queryIdx].pt.y; |
- points1.push_back(cv::Point2f(x,y)); |
- // Get the position of right keypoints |
- x= keypoints2[it->trainIdx].pt.x; |
- y= keypoints2[it->trainIdx].pt.y; |
- points2.push_back(cv::Point2f(x,y)); |
- } |
- |
- // Compute F matrix using RANSAC |
- std::vector<uchar> inliers(points1.size(),0); |
- cv::Mat fundemental= cv::findFundamentalMat( |
- cv::Mat(points1),cv::Mat(points2), // matching points |
- inliers, // match status (inlier ou outlier) |
- CV_FM_RANSAC, // RANSAC method |
- distance, // distance to epipolar line |
- confidence); // confidence probability |
- |
- // extract the surviving (inliers) matches |
- std::vector<uchar>::const_iterator itIn= inliers.begin(); |
- std::vector<cv::DMatch>::const_iterator itM= matches.begin(); |
- // for all matches |
- for ( ;itIn!= inliers.end(); ++itIn, ++itM) { |
- |
- if (*itIn) { // it is a valid match |
- |
- outMatches.push_back(*itM); |
- } |
- } |
- |
- std::cout << "Number of matched points (after cleaning): " << outMatches.size() << std::endl; |
- |
- if (refineF) { |
- // The F matrix will be recomputed with all accepted matches |
- |
- // Convert keypoints into Point2f for final F computation |
- points1.clear(); |
- points2.clear(); |
- |
- for (std::vector<cv::DMatch>::const_iterator it= outMatches.begin(); |
- it!= outMatches.end(); ++it) { |
- |
- // Get the position of left keypoints |
- float x= keypoints1[it->queryIdx].pt.x; |
- float y= keypoints1[it->queryIdx].pt.y; |
- points1.push_back(cv::Point2f(x,y)); |
- // Get the position of right keypoints |
- x= keypoints2[it->trainIdx].pt.x; |
- y= keypoints2[it->trainIdx].pt.y; |
- points2.push_back(cv::Point2f(x,y)); |
- } |
- |
- // Compute 8-point F from all accepted matches |
- fundemental= cv::findFundamentalMat( |
- cv::Mat(points1),cv::Mat(points2), // matching points |
- CV_FM_8POINT); // 8-point method |
- } |
- |
- return fundemental; |
- } |
- |
- // Match feature points using symmetry test and RANSAC |
- // returns fundemental matrix |
- cv::Mat match(cv::Mat& image1, cv::Mat& image2, // input images |
- std::vector<cv::DMatch>& matches, // output matches and keypoints |
- std::vector<cv::KeyPoint>& keypoints1, std::vector<cv::KeyPoint>& keypoints2) { |
- |
- // 1a. Detection of the SURF features |
- detector->detect(image1,keypoints1); |
- detector->detect(image2,keypoints2); |
- |
- std::cout << "Number of SURF points (1): " << keypoints1.size() << std::endl; |
- std::cout << "Number of SURF points (2): " << keypoints2.size() << std::endl; |
- |
- // 1b. Extraction of the SURF descriptors |
- cv::Mat descriptors1, descriptors2; |
- extractor->compute(image1,keypoints1,descriptors1); |
- extractor->compute(image2,keypoints2,descriptors2); |
- |
- std::cout << "descriptor matrix size: " << descriptors1.rows << " by " << descriptors1.cols << std::endl; |
- |
- // 2. Match the two image descriptors |
- |
- // Construction of the matcher |
- cv::BruteForceMatcher<cv::L2<float>> matcher; |
- |
- // from image 1 to image 2 |
- // based on k nearest neighbours (with k=2) |
- std::vector<std::vector<cv::DMatch>> matches1; |
- matcher.knnMatch(descriptors1,descriptors2, |
- matches1, // vector of matches (up to 2 per entry) |
- 2); // return 2 nearest neighbours |
- |
- // from image 2 to image 1 |
- // based on k nearest neighbours (with k=2) |
- std::vector<std::vector<cv::DMatch>> matches2; |
- matcher.knnMatch(descriptors2,descriptors1, |
- matches2, // vector of matches (up to 2 per entry) |
- 2); // return 2 nearest neighbours |
- |
- std::cout << "Number of matched points 1->2: " << matches1.size() << std::endl; |
- std::cout << "Number of matched points 2->1: " << matches2.size() << std::endl; |
- |
- // 3. Remove matches for which NN ratio is > than threshold |
- |
- // clean image 1 -> image 2 matches |
- int removed= ratioTest(matches1); |
- std::cout << "Number of matched points 1->2 (ratio test) : " << matches1.size()-removed << std::endl; |
- // clean image 2 -> image 1 matches |
- removed= ratioTest(matches2); |
- std::cout << "Number of matched points 1->2 (ratio test) : " << matches2.size()-removed << std::endl; |
- |
- // 4. Remove non-symmetrical matches |
- std::vector<cv::DMatch> symMatches; |
- symmetryTest(matches1,matches2,symMatches); |
- |
- std::cout << "Number of matched points (symmetry test): " << symMatches.size() << std::endl; |
- |
- // 5. Validate matches using RANSAC |
- cv::Mat fundemental= ransacTest(symMatches, keypoints1, keypoints2, matches); |
- |
- // return the found fundemental matrix |
- return fundemental; |
- } |
-}; |
- |
-#endif |
/trunk/Chapter 09/matcher.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/robustmatching.cpp |
=================================================================== |
--- trunk/Chapter 09/robustmatching.cpp (revision 9) |
+++ trunk/Chapter 09/robustmatching.cpp (nonexistent) |
@@ -1,113 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 9 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
-#include <opencv2/calib3d/calib3d.hpp> |
-#include "matcher.h" |
- |
-int main() |
-{ |
- // Read input images |
- cv::Mat image1= cv::imread("../canal1.jpg",0); |
- cv::Mat image2= cv::imread("../canal2.jpg",0); |
- if (!image1.data || !image2.data) |
- return 0; |
- |
- // Display the images |
- cv::namedWindow("Right Image"); |
- cv::imshow("Right Image",image1); |
- cv::namedWindow("Left Image"); |
- cv::imshow("Left Image",image2); |
- |
- // Prepare the matcher |
- RobustMatcher rmatcher; |
- rmatcher.setConfidenceLevel(0.98); |
- rmatcher.setMinDistanceToEpipolar(1.0); |
- rmatcher.setRatio(0.65f); |
- cv::Ptr<cv::FeatureDetector> pfd= new cv::SurfFeatureDetector(10); |
- rmatcher.setFeatureDetector(pfd); |
- |
- // Match the two images |
- std::vector<cv::DMatch> matches; |
- std::vector<cv::KeyPoint> keypoints1, keypoints2; |
- cv::Mat fundemental= rmatcher.match(image1,image2,matches, keypoints1, keypoints2); |
- |
- // draw the matches |
- cv::Mat imageMatches; |
- cv::drawMatches(image1,keypoints1, // 1st image and its keypoints |
- image2,keypoints2, // 2nd image and its keypoints |
- matches, // the matches |
- imageMatches, // the image produced |
- cv::Scalar(255,255,255)); // color of the lines |
- cv::namedWindow("Matches"); |
- cv::imshow("Matches",imageMatches); |
- |
- // Convert keypoints into Point2f |
- std::vector<cv::Point2f> points1, points2; |
- |
- for (std::vector<cv::DMatch>::const_iterator it= matches.begin(); |
- it!= matches.end(); ++it) { |
- |
- // Get the position of left keypoints |
- float x= keypoints1[it->queryIdx].pt.x; |
- float y= keypoints1[it->queryIdx].pt.y; |
- points1.push_back(cv::Point2f(x,y)); |
- cv::circle(image1,cv::Point(x,y),3,cv::Scalar(255,255,255),3); |
- // Get the position of right keypoints |
- x= keypoints2[it->trainIdx].pt.x; |
- y= keypoints2[it->trainIdx].pt.y; |
- cv::circle(image2,cv::Point(x,y),3,cv::Scalar(255,255,255),3); |
- points2.push_back(cv::Point2f(x,y)); |
- } |
- |
- // Draw the epipolar lines |
- std::vector<cv::Vec3f> lines1; |
- cv::computeCorrespondEpilines(cv::Mat(points1),1,fundemental,lines1); |
- |
- for (vector<cv::Vec3f>::const_iterator it= lines1.begin(); |
- it!=lines1.end(); ++it) { |
- |
- cv::line(image2,cv::Point(0,-(*it)[2]/(*it)[1]), |
- cv::Point(image2.cols,-((*it)[2]+(*it)[0]*image2.cols)/(*it)[1]), |
- cv::Scalar(255,255,255)); |
- } |
- |
- std::vector<cv::Vec3f> lines2; |
- cv::computeCorrespondEpilines(cv::Mat(points2),2,fundemental,lines2); |
- |
- for (vector<cv::Vec3f>::const_iterator it= lines2.begin(); |
- it!=lines2.end(); ++it) { |
- |
- cv::line(image1,cv::Point(0,-(*it)[2]/(*it)[1]), |
- cv::Point(image1.cols,-((*it)[2]+(*it)[0]*image1.cols)/(*it)[1]), |
- cv::Scalar(255,255,255)); |
- } |
- |
- // Display the images with epipolar lines |
- cv::namedWindow("Right Image Epilines (RANSAC)"); |
- cv::imshow("Right Image Epilines (RANSAC)",image1); |
- cv::namedWindow("Left Image Epilines (RANSAC)"); |
- cv::imshow("Left Image Epilines (RANSAC)",image2); |
- |
- cv::waitKey(); |
- return 0; |
-} |
\ No newline at end of file |
/trunk/Chapter 09/robustmatching.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/README.txt |
=================================================================== |
--- trunk/Chapter 09/README.txt (revision 9) |
+++ trunk/Chapter 09/README.txt (nonexistent) |
@@ -1,23 +0,0 @@ |
-This directory contains material supporting chapter 9 of the cookbook: |
-Computer Vision Programming using the OpenCV Library. |
-by Robert Laganiere, Packt Publishing, 2011. |
- |
-Files: |
- CameraCalibrator.h |
- CameraCalibrator.cpp |
- calibrate.cpp |
-correspond to Recipes: |
-Calibrating a camera |
-File: |
- estimateF.cpp |
-correspond to Recipe: |
-Computing the Fundamental Matrix of an Image Pair |
-Files: |
- matcher.h |
- robustmatching.cpp |
-correspond to Recipe: |
-Matching Images using Random Sample Consensus |
-File: |
- estimateH.cpp |
-correspond to Recipe: |
-Computing a homography between two images |
/trunk/Chapter 09/README.txt |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/CameraCalibrator.cpp |
=================================================================== |
--- trunk/Chapter 09/CameraCalibrator.cpp (revision 9) |
+++ trunk/Chapter 09/CameraCalibrator.cpp (nonexistent) |
@@ -1,158 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 9 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
- \*------------------------------------------------------------------------------------------*/ |
- |
-#include "CameraCalibrator.h" |
- |
-// Open chessboard images and extract corner points |
-int |
-CameraCalibrator::addChessboardPoints(const std::vector<std::string>& filelist, |
- cv::Size & boardSize) |
-{ |
- |
- // the points on the chessboard |
- std::vector<cv::Point2f> imageCorners; |
- std::vector<cv::Point3f> objectCorners; |
- |
- // 3D Scene Points: |
- // Initialize the chessboard corners |
- // in the chessboard reference frame |
- // The corners are at 3D location (X,Y,Z)= (i,j,0) |
- for (int i = 0; i < boardSize.height; i++) |
- { |
- for (int j = 0; j < boardSize.width; j++) |
- { |
- |
- objectCorners.push_back(cv::Point3f(i, j, 0.0f)); |
- } |
- } |
- |
- // 2D Image points: |
- cv::Mat image; // to contain chessboard image |
- int successes = 0; |
- // for all viewpoints |
- for (unsigned int i = 0; i < filelist.size(); i++) |
- { |
- |
- // Open the image |
- image = cv::imread(filelist[i], 0); |
- |
- // Get the chessboard corners |
- bool found = cv::findChessboardCorners(image, boardSize, imageCorners); |
- |
- // Get subpixel accuracy on the corners |
- cv::cornerSubPix(image, imageCorners, cv::Size(5, 5), cv::Size(-1, -1), |
- cv::TermCriteria(cv::TermCriteria::MAX_ITER + cv::TermCriteria::EPS, |
- 30, // max number of iterations |
- 0.1)); // min accuracy |
- |
- // If we have a good board, add it to our data |
- if (imageCorners.size() == (unsigned int) boardSize.area()) |
- { |
- |
- // Add image and scene points from one view |
- addPoints(imageCorners, objectCorners); |
- successes++; |
- } |
- |
- //Draw the corners |
- cv::drawChessboardCorners(image, boardSize, imageCorners, found); |
- cv::imshow("Corners on Chessboard", image); |
- cv::waitKey(100); |
- } |
- |
- return successes; |
-} |
- |
-// Add scene points and corresponding image points |
-void |
-CameraCalibrator::addPoints(const std::vector<cv::Point2f>& imageCorners, |
- const std::vector<cv::Point3f>& objectCorners) |
-{ |
- |
- // 2D image points from one view |
- imagePoints.push_back(imageCorners); |
- // corresponding 3D scene points |
- objectPoints.push_back(objectCorners); |
-} |
- |
-// Calibrate the camera |
-// returns the re-projection error |
-double |
-CameraCalibrator::calibrate(cv::Size imageSize) |
-{ |
- // undistorter must be reinitialized |
- mustInitUndistort = true; |
- |
- //Output rotations and translations |
- std::vector<cv::Mat> rvecs, tvecs; |
- |
- // start calibration |
- return calibrateCamera(objectPoints, // the 3D points |
- imagePoints, // the image points |
- imageSize, // image size |
- cameraMatrix, // output camera matrix |
- distCoeffs, // output distortion matrix |
- rvecs, tvecs, // Rs, Ts |
- flag); // set options |
-// ,CV_CALIB_USE_INTRINSIC_GUESS); |
- |
-} |
- |
-// remove distortion in an image (after calibration) |
-cv::Mat |
-CameraCalibrator::remap(const cv::Mat &image) |
-{ |
- |
- cv::Mat undistorted; |
- |
- if (mustInitUndistort) |
- { // called once per calibration |
- |
- cv::initUndistortRectifyMap(cameraMatrix, // computed camera matrix |
- distCoeffs, // computed distortion matrix |
- cv::Mat(), // optional rectification (none) |
- cv::Mat(), // camera matrix to generate undistorted |
- cv::Size(640, 480), |
-// image.size(), // size of undistorted |
- CV_32FC1,// type of output map |
- map1, map2); // the x and y mapping functions |
- |
- mustInitUndistort = false; |
- } |
- |
- // Apply mapping functions |
- cv::remap(image, undistorted, map1, map2, cv::INTER_LINEAR); // interpolation type |
- |
- return undistorted; |
-} |
- |
-// Set the calibration options |
-// 8radialCoeffEnabled should be true if 8 radial coefficients are required (5 is default) |
-// tangentialParamEnabled should be true if tangeantial distortion is present |
-void |
-CameraCalibrator::setCalibrationFlag(bool radial8CoeffEnabled, |
- bool tangentialParamEnabled) |
-{ |
- |
- // Set the flag used in cv::calibrateCamera() |
- flag = 0; |
- if (!tangentialParamEnabled) |
- flag += CV_CALIB_ZERO_TANGENT_DIST; |
- if (radial8CoeffEnabled) |
- flag += CV_CALIB_RATIONAL_MODEL; |
-} |
- |
/trunk/Chapter 09/CameraCalibrator.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/CameraCalibrator.h |
=================================================================== |
--- trunk/Chapter 09/CameraCalibrator.h (revision 9) |
+++ trunk/Chapter 09/CameraCalibrator.h (nonexistent) |
@@ -1,83 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 9 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
- \*------------------------------------------------------------------------------------------*/ |
- |
-#ifndef CAMERACALIBRATOR_H |
-#define CAMERACALIBRATOR_H |
- |
-#include <vector> |
-#include <iostream> |
- |
-#include <opencv2/core/core.hpp> |
-#include "opencv2/imgproc/imgproc.hpp" |
-#include "opencv2/calib3d/calib3d.hpp" |
-#include <opencv2/highgui/highgui.hpp> |
- |
-class CameraCalibrator |
-{ |
- |
- // input points |
- std::vector<std::vector<cv::Point3f> > objectPoints; |
- std::vector<std::vector<cv::Point2f> > imagePoints; |
- // output Matrices |
- cv::Mat cameraMatrix; |
- cv::Mat distCoeffs; |
- // flag to specify how calibration is done |
- int flag; |
- // used in image undistortion |
- cv::Mat map1, map2; |
- bool mustInitUndistort; |
- |
-public: |
- CameraCalibrator() : |
- flag(0), mustInitUndistort(true) |
- { |
- } |
- ; |
- |
- // Open the chessboard images and extract corner points |
- int |
- addChessboardPoints(const std::vector<std::string>& filelist, |
- cv::Size & boardSize); |
- // Add scene points and corresponding image points |
- void |
- addPoints(const std::vector<cv::Point2f>& imageCorners, |
- const std::vector<cv::Point3f>& objectCorners); |
- // Calibrate the camera |
- double |
- calibrate(cv::Size imageSize); |
- // Set the calibration flag |
- void |
- setCalibrationFlag(bool radial8CoeffEnabled = false, |
- bool tangentialParamEnabled = false); |
- // Remove distortion in an image (after calibration) |
- cv::Mat |
- remap(const cv::Mat &image); |
- |
- // Getters |
- cv::Mat |
- getCameraMatrix() |
- { |
- return cameraMatrix; |
- } |
- cv::Mat |
- getDistCoeffs() |
- { |
- return distCoeffs; |
- } |
-}; |
- |
-#endif // CAMERACALIBRATOR_H |
/trunk/Chapter 09/CameraCalibrator.h |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/estimateF.cpp |
=================================================================== |
--- trunk/Chapter 09/estimateF.cpp (revision 9) |
+++ trunk/Chapter 09/estimateF.cpp (nonexistent) |
@@ -1,331 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 9 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
-#include <opencv2/calib3d/calib3d.hpp> |
- |
-int main() |
-{ |
- // Read input images |
- cv::Mat image1= cv::imread("../church01.jpg",0); |
- cv::Mat image2= cv::imread("../church03.jpg",0); |
- if (!image1.data || !image2.data) |
- return 0; |
- |
- // Display the images |
- cv::namedWindow("Right Image"); |
- cv::imshow("Right Image",image1); |
- cv::namedWindow("Left Image"); |
- cv::imshow("Left Image",image2); |
- |
- // vector of keypoints |
- std::vector<cv::KeyPoint> keypoints1; |
- std::vector<cv::KeyPoint> keypoints2; |
- |
- // Construction of the SURF feature detector |
- cv::SurfFeatureDetector surf(3000); |
- |
- // Detection of the SURF features |
- surf.detect(image1,keypoints1); |
- surf.detect(image2,keypoints2); |
- |
- std::cout << "Number of SURF points (1): " << keypoints1.size() << std::endl; |
- std::cout << "Number of SURF points (2): " << keypoints2.size() << std::endl; |
- |
- // Draw the kepoints |
- cv::Mat imageKP; |
- cv::drawKeypoints(image1,keypoints1,imageKP,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); |
- cv::namedWindow("Right SURF Features"); |
- cv::imshow("Right SURF Features",imageKP); |
- cv::drawKeypoints(image2,keypoints2,imageKP,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); |
- cv::namedWindow("Left SURF Features"); |
- cv::imshow("Left SURF Features",imageKP); |
- |
- // Construction of the SURF descriptor extractor |
- cv::SurfDescriptorExtractor surfDesc; |
- |
- // Extraction of the SURF descriptors |
- cv::Mat descriptors1, descriptors2; |
- surfDesc.compute(image1,keypoints1,descriptors1); |
- surfDesc.compute(image2,keypoints2,descriptors2); |
- |
- std::cout << "descriptor matrix size: " << descriptors1.rows << " by " << descriptors1.cols << std::endl; |
- |
- // Construction of the matcher |
- cv::BruteForceMatcher<cv::L2<float>> matcher; |
- |
- // Match the two image descriptors |
- std::vector<cv::DMatch> matches; |
- matcher.match(descriptors1,descriptors2, matches); |
- |
- std::cout << "Number of matched points: " << matches.size() << std::endl; |
- |
- // Select few Matches |
- std::vector<cv::DMatch> selMatches; |
- /* |
- keypoints1.push_back(cv::KeyPoint(342.,615.,2)); |
- keypoints2.push_back(cv::KeyPoint(410.,600.,2)); |
- selMatches.push_back(cv::DMatch(keypoints1.size()-1,keypoints2.size()-1,0)); // street light bulb |
- selMatches.push_back(matches[6]); // right tower |
- selMatches.push_back(matches[60]); // left bottom window |
- selMatches.push_back(matches[139]); |
- selMatches.push_back(matches[141]); // middle window |
- selMatches.push_back(matches[213]); |
- selMatches.push_back(matches[273]); |
- |
- int kk=0; |
- while (kk<matches.size()) { |
- std::cout<<kk<<std::endl; |
- selMatches.push_back(matches[kk++]); |
- selMatches.pop_back(); |
- cv::waitKey(); |
- } |
- */ |
- |
- /* between church01 and church03 */ |
- selMatches.push_back(matches[14]); |
- selMatches.push_back(matches[16]); |
- selMatches.push_back(matches[141]); |
- selMatches.push_back(matches[146]); |
- selMatches.push_back(matches[235]); |
- selMatches.push_back(matches[238]); |
- selMatches.push_back(matches[274]); |
- |
- // Draw the selected matches |
- cv::Mat imageMatches; |
- cv::drawMatches(image1,keypoints1, // 1st image and its keypoints |
- image2,keypoints2, // 2nd image and its keypoints |
-// selMatches, // the matches |
- matches, // the matches |
- imageMatches, // the image produced |
- cv::Scalar(255,255,255)); // color of the lines |
- cv::namedWindow("Matches"); |
- cv::imshow("Matches",imageMatches); |
- |
- // Convert 1 vector of keypoints into |
- // 2 vectors of Point2f |
- std::vector<int> pointIndexes1; |
- std::vector<int> pointIndexes2; |
- for (std::vector<cv::DMatch>::const_iterator it= selMatches.begin(); |
- it!= selMatches.end(); ++it) { |
- |
- // Get the indexes of the selected matched keypoints |
- pointIndexes1.push_back(it->queryIdx); |
- pointIndexes2.push_back(it->trainIdx); |
- } |
- |
- // Convert keypoints into Point2f |
- std::vector<cv::Point2f> selPoints1, selPoints2; |
- cv::KeyPoint::convert(keypoints1,selPoints1,pointIndexes1); |
- cv::KeyPoint::convert(keypoints2,selPoints2,pointIndexes2); |
- |
- // check by drawing the points |
- std::vector<cv::Point2f>::const_iterator it= selPoints1.begin(); |
- while (it!=selPoints1.end()) { |
- |
- // draw a circle at each corner location |
- cv::circle(image1,*it,3,cv::Scalar(255,255,255),2); |
- ++it; |
- } |
- |
- it= selPoints2.begin(); |
- while (it!=selPoints2.end()) { |
- |
- // draw a circle at each corner location |
- cv::circle(image2,*it,3,cv::Scalar(255,255,255),2); |
- ++it; |
- } |
- |
- // Compute F matrix from 7 matches |
- cv::Mat fundemental= cv::findFundamentalMat( |
- cv::Mat(selPoints1), // points in first image |
- cv::Mat(selPoints2), // points in second image |
- CV_FM_7POINT); // 7-point method |
- |
- std::cout << "F-Matrix size= " << fundemental.rows << "," << fundemental.cols << std::endl; |
- |
- // draw the left points corresponding epipolar lines in right image |
- std::vector<cv::Vec3f> lines1; |
- cv::computeCorrespondEpilines( |
- cv::Mat(selPoints1), // image points |
- 1, // in image 1 (can also be 2) |
- fundemental, // F matrix |
- lines1); // vector of epipolar lines |
- |
- // for all epipolar lines |
- for (vector<cv::Vec3f>::const_iterator it= lines1.begin(); |
- it!=lines1.end(); ++it) { |
- |
- // draw the epipolar line between first and last column |
- cv::line(image2,cv::Point(0,-(*it)[2]/(*it)[1]), |
- cv::Point(image2.cols,-((*it)[2]+(*it)[0]*image2.cols)/(*it)[1]), |
- cv::Scalar(255,255,255)); |
- } |
- |
- // draw the left points corresponding epipolar lines in left image |
- std::vector<cv::Vec3f> lines2; |
- cv::computeCorrespondEpilines(cv::Mat(selPoints2),2,fundemental,lines2); |
- for (vector<cv::Vec3f>::const_iterator it= lines2.begin(); |
- it!=lines2.end(); ++it) { |
- |
- // draw the epipolar line between first and last column |
- cv::line(image1,cv::Point(0,-(*it)[2]/(*it)[1]), |
- cv::Point(image1.cols,-((*it)[2]+(*it)[0]*image1.cols)/(*it)[1]), |
- cv::Scalar(255,255,255)); |
- } |
- |
- // Display the images with points and epipolar lines |
- cv::namedWindow("Right Image Epilines"); |
- cv::imshow("Right Image Epilines",image1); |
- cv::namedWindow("Left Image Epilines"); |
- cv::imshow("Left Image Epilines",image2); |
- |
- /* |
- std::nth_element(matches.begin(), // initial position |
- matches.begin()+matches.size()/2, // 50% |
- matches.end()); // end position |
- // remove all elements after the |
- matches.erase(matches.begin()+matches.size()/2, matches.end()); |
-*/ |
- // Convert keypoints into Point2f |
- std::vector<cv::Point2f> points1, points2; |
- for (std::vector<cv::DMatch>::const_iterator it= matches.begin(); |
- it!= matches.end(); ++it) { |
- |
- // Get the position of left keypoints |
- float x= keypoints1[it->queryIdx].pt.x; |
- float y= keypoints1[it->queryIdx].pt.y; |
- points1.push_back(cv::Point2f(x,y)); |
- // Get the position of right keypoints |
- x= keypoints2[it->trainIdx].pt.x; |
- y= keypoints2[it->trainIdx].pt.y; |
- points2.push_back(cv::Point2f(x,y)); |
- } |
- |
- std::cout << points1.size() << " " << points2.size() << std::endl; |
- |
- // Compute F matrix using RANSAC |
- std::vector<uchar> inliers(points1.size(),0); |
- fundemental= cv::findFundamentalMat( |
- cv::Mat(points1),cv::Mat(points2), // matching points |
- inliers, // match status (inlier ou outlier) |
- CV_FM_RANSAC, // RANSAC method |
- 1, // distance to epipolar line |
- 0.98); // confidence probability |
- |
- // Read input images |
- image1= cv::imread("../church01.jpg",0); |
- image2= cv::imread("../church03.jpg",0); |
- |
- // Draw the epipolar line of few points |
- cv::computeCorrespondEpilines(cv::Mat(selPoints1),1,fundemental,lines1); |
- for (vector<cv::Vec3f>::const_iterator it= lines1.begin(); |
- it!=lines1.end(); ++it) { |
- |
- cv::line(image2,cv::Point(0,-(*it)[2]/(*it)[1]), |
- cv::Point(image2.cols,-((*it)[2]+(*it)[0]*image2.cols)/(*it)[1]), |
- cv::Scalar(255,255,255)); |
- } |
- |
- cv::computeCorrespondEpilines(cv::Mat(selPoints2),2,fundemental,lines2); |
- for (vector<cv::Vec3f>::const_iterator it= lines2.begin(); |
- it!=lines2.end(); ++it) { |
- |
- cv::line(image1,cv::Point(0,-(*it)[2]/(*it)[1]), |
- cv::Point(image1.cols,-((*it)[2]+(*it)[0]*image1.cols)/(*it)[1]), |
- cv::Scalar(255,255,255)); |
- } |
- |
- // Draw the inlier points |
- std::vector<cv::Point2f> points1In, points2In; |
- std::vector<cv::Point2f>::const_iterator itPts= points1.begin(); |
- std::vector<uchar>::const_iterator itIn= inliers.begin(); |
- while (itPts!=points1.end()) { |
- |
- // draw a circle at each inlier location |
- if (*itIn) { |
- cv::circle(image1,*itPts,3,cv::Scalar(255,255,255),2); |
- points1In.push_back(*itPts); |
- } |
- ++itPts; |
- ++itIn; |
- } |
- |
- itPts= points2.begin(); |
- itIn= inliers.begin(); |
- while (itPts!=points2.end()) { |
- |
- // draw a circle at each inlier location |
- if (*itIn) { |
- cv::circle(image2,*itPts,3,cv::Scalar(255,255,255),2); |
- points2In.push_back(*itPts); |
- } |
- ++itPts; |
- ++itIn; |
- } |
- |
- // Display the images with points |
- cv::namedWindow("Right Image Epilines (RANSAC)"); |
- cv::imshow("Right Image Epilines (RANSAC)",image1); |
- cv::namedWindow("Left Image Epilines (RANSAC)"); |
- cv::imshow("Left Image Epilines (RANSAC)",image2); |
- |
- cv::findHomography(cv::Mat(points1In),cv::Mat(points2In),inliers,CV_RANSAC,1.); |
- |
- // Read input images |
- image1= cv::imread("../church01.jpg",0); |
- image2= cv::imread("../church03.jpg",0); |
- |
- // Draw the inlier points |
- itPts= points1In.begin(); |
- itIn= inliers.begin(); |
- while (itPts!=points1In.end()) { |
- |
- // draw a circle at each inlier location |
- if (*itIn) |
- cv::circle(image1,*itPts,3,cv::Scalar(255,255,255),2); |
- |
- ++itPts; |
- ++itIn; |
- } |
- |
- itPts= points2In.begin(); |
- itIn= inliers.begin(); |
- while (itPts!=points2In.end()) { |
- |
- // draw a circle at each inlier location |
- if (*itIn) |
- cv::circle(image2,*itPts,3,cv::Scalar(255,255,255),2); |
- |
- ++itPts; |
- ++itIn; |
- } |
- |
- // Display the images with points |
- cv::namedWindow("Right Image Homography (RANSAC)"); |
- cv::imshow("Right Image Homography (RANSAC)",image1); |
- cv::namedWindow("Left Image Homography (RANSAC)"); |
- cv::imshow("Left Image Homography (RANSAC)",image2); |
- |
- cv::waitKey(); |
- return 0; |
- } |
\ No newline at end of file |
/trunk/Chapter 09/estimateF.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/Chapter 09/estimateH.cpp |
=================================================================== |
--- trunk/Chapter 09/estimateH.cpp (revision 9) |
+++ trunk/Chapter 09/estimateH.cpp (nonexistent) |
@@ -1,137 +0,0 @@ |
-/*------------------------------------------------------------------------------------------*\ |
- This file contains material supporting chapter 9 of the cookbook: |
- Computer Vision Programming using the OpenCV Library. |
- by Robert Laganiere, Packt Publishing, 2011. |
- |
- This program is free software; permission is hereby granted to use, copy, modify, |
- and distribute this source code, or portions thereof, for any purpose, without fee, |
- subject to the restriction that the copyright notice may not be removed |
- or altered from any source or altered source distribution. |
- The software is released on an as-is basis and without any warranties of any kind. |
- In particular, the software is not guaranteed to be fault-tolerant or free from failure. |
- The author disclaims all warranties with regard to this software, any use, |
- and any consequent failure, is purely the responsibility of the user. |
- |
- Copyright (C) 2010-2011 Robert Laganiere, www.laganiere.name |
-\*------------------------------------------------------------------------------------------*/ |
- |
-#include <iostream> |
-#include <vector> |
-#include <opencv2/core/core.hpp> |
-#include <opencv2/imgproc/imgproc.hpp> |
-#include <opencv2/highgui/highgui.hpp> |
-#include <opencv2/features2d/features2d.hpp> |
-#include <opencv2/calib3d/calib3d.hpp> |
-#include "matcher.h" |
- |
-int main() |
-{ |
- // Read input images |
- cv::Mat image1= cv::imread("../parliament1.bmp",0); |
- cv::Mat image2= cv::imread("../parliament2.bmp",0); |
- if (!image1.data || !image2.data) |
- return 0; |
- |
- // Display the images |
- cv::namedWindow("Image 1"); |
- cv::imshow("Image 1",image1); |
- cv::namedWindow("Image 2"); |
- cv::imshow("Image 2",image2); |
- |
- // Prepare the matcher |
- RobustMatcher rmatcher; |
- rmatcher.setConfidenceLevel(0.98); |
- rmatcher.setMinDistanceToEpipolar(1.0); |
- rmatcher.setRatio(0.65f); |
- cv::Ptr<cv::FeatureDetector> pfd= new cv::SurfFeatureDetector(10); |
- rmatcher.setFeatureDetector(pfd); |
- |
- // Match the two images |
- std::vector<cv::DMatch> matches; |
- std::vector<cv::KeyPoint> keypoints1, keypoints2; |
- cv::Mat fundemental= rmatcher.match(image1,image2,matches, keypoints1, keypoints2); |
- |
- // draw the matches |
- cv::Mat imageMatches; |
- cv::drawMatches(image1,keypoints1, // 1st image and its keypoints |
- image2,keypoints2, // 2nd image and its keypoints |
- matches, // the matches |
- imageMatches, // the image produced |
- cv::Scalar(255,255,255)); // color of the lines |
- cv::namedWindow("Matches"); |
- cv::imshow("Matches",imageMatches); |
- |
- // Convert keypoints into Point2f |
- std::vector<cv::Point2f> points1, points2; |
- for (std::vector<cv::DMatch>::const_iterator it= matches.begin(); |
- it!= matches.end(); ++it) { |
- |
- // Get the position of left keypoints |
- float x= keypoints1[it->queryIdx].pt.x; |
- float y= keypoints1[it->queryIdx].pt.y; |
- points1.push_back(cv::Point2f(x,y)); |
- // Get the position of right keypoints |
- x= keypoints2[it->trainIdx].pt.x; |
- y= keypoints2[it->trainIdx].pt.y; |
- points2.push_back(cv::Point2f(x,y)); |
- } |
- |
- std::cout << points1.size() << " " << points2.size() << std::endl; |
- |
- // Find the homography between image 1 and image 2 |
- std::vector<uchar> inliers(points1.size(),0); |
- cv::Mat homography= cv::findHomography( |
- cv::Mat(points1),cv::Mat(points2), // corresponding points |
- inliers, // outputed inliers matches |
- CV_RANSAC, // RANSAC method |
- 1.); // max distance to reprojection point |
- |
- // Draw the inlier points |
- std::vector<cv::Point2f>::const_iterator itPts= points1.begin(); |
- std::vector<uchar>::const_iterator itIn= inliers.begin(); |
- while (itPts!=points1.end()) { |
- |
- // draw a circle at each inlier location |
- if (*itIn) |
- cv::circle(image1,*itPts,3,cv::Scalar(255,255,255),2); |
- |
- ++itPts; |
- ++itIn; |
- } |
- |
- itPts= points2.begin(); |
- itIn= inliers.begin(); |
- while (itPts!=points2.end()) { |
- |
- // draw a circle at each inlier location |
- if (*itIn) |
- cv::circle(image2,*itPts,3,cv::Scalar(255,255,255),2); |
- |
- ++itPts; |
- ++itIn; |
- } |
- |
- // Display the images with points |
- cv::namedWindow("Image 1 Homography Points"); |
- cv::imshow("Image 1 Homography Points",image1); |
- cv::namedWindow("Image 2 Homography Points"); |
- cv::imshow("Image 2 Homography Points",image2); |
- |
- // Warp image 1 to image 2 |
- cv::Mat result; |
- cv::warpPerspective(image1, // input image |
- result, // output image |
- homography, // homography |
- cv::Size(2*image1.cols,image1.rows)); // size of output image |
- |
- // Copy image 1 on the first half of full image |
- cv::Mat half(result,cv::Rect(0,0,image2.cols,image2.rows)); |
- image2.copyTo(half); |
- |
- // Display the warp image |
- cv::namedWindow("After warping"); |
- cv::imshow("After warping",result); |
- |
- cv::waitKey(); |
- return 0; |
-} |
\ No newline at end of file |
/trunk/Chapter 09/estimateH.cpp |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk/.cproject |
=================================================================== |
--- trunk/.cproject (revision 9) |
+++ trunk/.cproject (nonexistent) |
@@ -1,370 +0,0 @@ |
-<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> |
- <storageModule moduleId="org.eclipse.cdt.core.settings"> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1600881823"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1600881823" moduleId="org.eclipse.cdt.core.settings" name="Debug"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1600881823" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1214234172" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.exe.debug" superClass="cdt.managedbuild.toolchain.gnu.exe.debug"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.783291601" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/> |
- <builder buildPath="${workspace_loc:/OpenCV-Cookbook}" id="cdt.managedbuild.target.gnu.builder.exe.debug.126821477" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.1754937666" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1963823569" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"> |
- <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.19971816" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.1474289965" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.option.warnings.allwarn.1602350395" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="true" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.extrawarn.1519659844" name="Extra warnings (-Wextra)" superClass="gnu.cpp.compiler.option.warnings.extrawarn" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.toerrors.1926025469" name="Warnings as errors (-Werror)" superClass="gnu.cpp.compiler.option.warnings.toerrors" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.include.paths.1310027786" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1668624091" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.271730398" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"> |
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1414233610" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.debug.option.debugging.level.218538662" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.70971761" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.320046004" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.767125794" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"> |
- <option id="gnu.cpp.link.option.paths.1326965106" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> |
- <listOptionValue builtIn="false" value="/usr/lib/i386-linux-gnu"/> |
- </option> |
- <option id="gnu.cpp.link.option.libs.2001830366" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> |
- <listOptionValue builtIn="false" value="opencv_core"/> |
- <listOptionValue builtIn="false" value="opencv_imgproc"/> |
- </option> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.4885178" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.670684951" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.764964760" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- <fileInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823.729502543" name="edgedetector.h" rcbsApplicability="disable" resourcePath="Chapter 07/edgedetector.h" toolsToInvoke=""/> |
- <sourceEntries> |
- <entry excluding="Chapter 01|Chapter 01/main2.cpp|Chapter 01/main1.cpp|Chapter 01/myQtGUIApp|Chapter 01/anotherQtGUI|Chapter 10|Chapter 08|Chapter 07|Chapter 06|Chapter 05|Chapter 04|Chapter 03|Chapter 07/edgedetector.h|Chapter 07/contours.cpp|Chapter 07/blobs.cpp|Chapter 08/tracking.cpp|Chapter 08/interestPoints.cpp|Chapter 09" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> |
- </sourceEntries> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.release.556099912"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.556099912" moduleId="org.eclipse.cdt.core.settings" name="Release"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.556099912" name="Release" parent="cdt.managedbuild.config.gnu.exe.release"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.release.556099912." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.376148729" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.939131318" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/> |
- <builder buildPath="${workspace_loc:/OpenCV-Cookbook}/Release" id="cdt.managedbuild.target.gnu.builder.exe.release.876573325" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.2036189826" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.738370374" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release"> |
- <option id="gnu.cpp.compiler.exe.release.option.optimization.level.996371240" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.release.option.debugging.level.1935284451" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.823758536" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.283225499" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release"> |
- <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.1221161276" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.release.option.debugging.level.531716638" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.17558407" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.538804307" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.310238114" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release"> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.795123990" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.1034142410" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2041258402" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- <sourceEntries> |
- <entry excluding="Chapter 02/colorReduce.cpp|Chapter 01|Chapter 09" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> |
- </sourceEntries> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304" moduleId="org.eclipse.cdt.core.settings" name="Chapter 01 - main1"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304" name="Chapter 01 - main1" parent="cdt.managedbuild.config.gnu.exe.debug"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1205159557" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.exe.debug" superClass="cdt.managedbuild.toolchain.gnu.exe.debug"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.816039066" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/> |
- <builder buildPath="${workspace_loc:/OpenCV-Cookbook}" id="cdt.managedbuild.target.gnu.builder.exe.debug.98940323" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.1195261419" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.219516709" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"> |
- <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.1982432896" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.649049091" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.option.warnings.allwarn.395817723" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="true" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.extrawarn.1814205552" name="Extra warnings (-Wextra)" superClass="gnu.cpp.compiler.option.warnings.extrawarn" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.toerrors.476721772" name="Warnings as errors (-Werror)" superClass="gnu.cpp.compiler.option.warnings.toerrors" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.include.paths.721783417" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.299629893" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1262579586" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"> |
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1703772341" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.debug.option.debugging.level.534911463" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.416540508" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1018265536" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1322493811" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"> |
- <option id="gnu.cpp.link.option.paths.1845642534" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> |
- <listOptionValue builtIn="false" value="/usr/lib/i386-linux-gnu"/> |
- </option> |
- <option id="gnu.cpp.link.option.libs.122330197" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> |
- <listOptionValue builtIn="false" value="opencv_core"/> |
- <listOptionValue builtIn="false" value="opencv_imgproc"/> |
- <listOptionValue builtIn="false" value="opencv_highgui"/> |
- </option> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1270934031" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.608177937" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.673434700" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- <fileInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304.Chapter 07/edgedetector.h" name="edgedetector.h" rcbsApplicability="disable" resourcePath="Chapter 07/edgedetector.h" toolsToInvoke=""/> |
- <sourceEntries> |
- <entry excluding="Chapter 02|Chapter 01/myQtGUIApp|Chapter 01/anotherQtGUI|Chapter 01/main2.cpp|Chapter 10|Chapter 08|Chapter 07|Chapter 06|Chapter 05|Chapter 04|Chapter 03|Chapter 07/edgedetector.h|Chapter 07/contours.cpp|Chapter 07/blobs.cpp|Chapter 08/tracking.cpp|Chapter 08/interestPoints.cpp|Chapter 09" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> |
- </sourceEntries> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304.236359982"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304.236359982" moduleId="org.eclipse.cdt.core.settings" name="Chapter 01 - main2"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304.236359982" name="Chapter 01 - main2" parent="cdt.managedbuild.config.gnu.exe.debug"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304.236359982." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1317404625" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.exe.debug" superClass="cdt.managedbuild.toolchain.gnu.exe.debug"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.1619655878" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/> |
- <builder buildPath="${workspace_loc:/OpenCV-Cookbook}" id="cdt.managedbuild.target.gnu.builder.exe.debug.728358426" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.904783168" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.197095794" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"> |
- <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.171538" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.118293973" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.option.warnings.allwarn.653124086" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="true" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.extrawarn.1532073899" name="Extra warnings (-Wextra)" superClass="gnu.cpp.compiler.option.warnings.extrawarn" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.toerrors.522351449" name="Warnings as errors (-Werror)" superClass="gnu.cpp.compiler.option.warnings.toerrors" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.include.paths.1528365819" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2135750613" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.496678785" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"> |
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.662601103" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.debug.option.debugging.level.1984381482" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1440232604" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1806596653" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.343809238" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"> |
- <option id="gnu.cpp.link.option.paths.598400752" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> |
- <listOptionValue builtIn="false" value="/usr/lib/i386-linux-gnu"/> |
- </option> |
- <option id="gnu.cpp.link.option.libs.1111854979" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> |
- <listOptionValue builtIn="false" value="opencv_core"/> |
- <listOptionValue builtIn="false" value="opencv_imgproc"/> |
- <listOptionValue builtIn="false" value="opencv_highgui"/> |
- </option> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.622068646" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.1412701041" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1188414256" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- <fileInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823.243651304.236359982.Chapter 07/edgedetector.h" name="edgedetector.h" rcbsApplicability="disable" resourcePath="Chapter 07/edgedetector.h" toolsToInvoke=""/> |
- <sourceEntries> |
- <entry excluding="Chapter 02|Chapter 01/main1.cpp|Chapter 01/myQtGUIApp|Chapter 01/anotherQtGUI|Chapter 10|Chapter 08|Chapter 07|Chapter 06|Chapter 05|Chapter 04|Chapter 03|Chapter 07/edgedetector.h|Chapter 07/contours.cpp|Chapter 07/blobs.cpp|Chapter 08/tracking.cpp|Chapter 08/interestPoints.cpp|Chapter 09" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> |
- </sourceEntries> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1600881823.233274929"> |
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1600881823.233274929" moduleId="org.eclipse.cdt.core.settings" name="Chapter 02 - addImages"> |
- <externalSettings/> |
- <extensions> |
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
- </extensions> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1600881823.233274929" name="Chapter 02 - addImages" parent="cdt.managedbuild.config.gnu.exe.debug"> |
- <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823.233274929." name="/" resourcePath=""> |
- <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.108174983" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.exe.debug" superClass="cdt.managedbuild.toolchain.gnu.exe.debug"> |
- <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.964025759" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/> |
- <builder buildPath="${workspace_loc:/OpenCV-Cookbook}" id="cdt.managedbuild.target.gnu.builder.exe.debug.1418767907" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.archiver.base.295418720" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1677419475" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"> |
- <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.1240376165" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.694484283" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> |
- <option id="gnu.cpp.compiler.option.warnings.allwarn.1199343970" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="true" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.extrawarn.1882721732" name="Extra warnings (-Wextra)" superClass="gnu.cpp.compiler.option.warnings.extrawarn" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.warnings.toerrors.1939604448" name="Warnings as errors (-Werror)" superClass="gnu.cpp.compiler.option.warnings.toerrors" value="false" valueType="boolean"/> |
- <option id="gnu.cpp.compiler.option.include.paths.1458220616" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths"/> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.842599991" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.299434200" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"> |
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.82884277" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/> |
- <option id="gnu.c.compiler.exe.debug.option.debugging.level.371286265" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> |
- <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1284858358" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.457997541" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/> |
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.377493740" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"> |
- <option id="gnu.cpp.link.option.paths.388765570" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> |
- <listOptionValue builtIn="false" value="/usr/lib/i386-linux-gnu"/> |
- </option> |
- <option id="gnu.cpp.link.option.libs.816003155" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> |
- <listOptionValue builtIn="false" value="opencv_core"/> |
- <listOptionValue builtIn="false" value="opencv_imgproc"/> |
- <listOptionValue builtIn="false" value="opencv_highgui"/> |
- </option> |
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.314125669" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> |
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
- <additionalInput kind="additionalinput" paths="$(LIBS)"/> |
- </inputType> |
- </tool> |
- <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.1130285259" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"> |
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1601991856" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
- </tool> |
- </toolChain> |
- </folderInfo> |
- <fileInfo id="cdt.managedbuild.config.gnu.exe.debug.1600881823.233274929.Chapter 07/edgedetector.h" name="edgedetector.h" rcbsApplicability="disable" resourcePath="Chapter 07/edgedetector.h" toolsToInvoke=""/> |
- <sourceEntries> |
- <entry excluding="Chapter 02/saltImage.cpp|Chapter 02/contrast.cpp|Chapter 02/colorReduce.cpp|Chapter 01|Chapter 01/main2.cpp|Chapter 01/main1.cpp|Chapter 01/myQtGUIApp|Chapter 01/anotherQtGUI|Chapter 10|Chapter 08|Chapter 07|Chapter 06|Chapter 05|Chapter 04|Chapter 03|Chapter 07/edgedetector.h|Chapter 07/contours.cpp|Chapter 07/blobs.cpp|Chapter 08/tracking.cpp|Chapter 08/interestPoints.cpp|Chapter 09" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> |
- </sourceEntries> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
- </cconfiguration> |
- </storageModule> |
- <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
- <project id="OpenCV-Cookbook.cdt.managedbuild.target.gnu.exe.275092129" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/> |
- </storageModule> |
- <storageModule moduleId="scannerConfiguration"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1600881823;cdt.managedbuild.config.gnu.exe.debug.1600881823.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.271730398;cdt.managedbuild.tool.gnu.c.compiler.input.70971761"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1600881823;cdt.managedbuild.config.gnu.exe.debug.1600881823.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1963823569;cdt.managedbuild.tool.gnu.cpp.compiler.input.1668624091"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.556099912;cdt.managedbuild.config.gnu.exe.release.556099912.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.738370374;cdt.managedbuild.tool.gnu.cpp.compiler.input.823758536"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.556099912;cdt.managedbuild.config.gnu.exe.release.556099912.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.283225499;cdt.managedbuild.tool.gnu.c.compiler.input.17558407"> |
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
- </scannerConfigBuildInfo> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> |
- <storageModule moduleId="refreshScope" versionNumber="2"> |
- <configuration configurationName="Release"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="OpenCV2 Cookbook - Chapter 01 - main2"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="Chapter 01 - main2"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="OpenCV cOokbook - Chapter 01 - main2"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="Chapter 01 - main1"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="Chapter 01"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="Debug"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="OpenCV2 Cookbook - Chapter 1"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="OpenCV2 Cookbook - Chapter 01 - main1"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="Chapter 02 - addImages"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- <configuration configurationName="Chapter 01 - myQtGUIApp"> |
- <resource resourceType="PROJECT" workspacePath="/OpenCV-Cookbook"/> |
- </configuration> |
- </storageModule> |
- <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"> |
- <buildTargets> |
- <target name="all" path="Chapter 01/myQtGUIApp" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> |
- <buildCommand>make</buildCommand> |
- <buildArguments/> |
- <buildTarget>all</buildTarget> |
- <stopOnError>true</stopOnError> |
- <useDefaultCommand>false</useDefaultCommand> |
- <runAllBuilders>false</runAllBuilders> |
- </target> |
- <target name="main" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> |
- <buildCommand>make</buildCommand> |
- <buildArguments/> |
- <buildTarget>main</buildTarget> |
- <stopOnError>true</stopOnError> |
- <useDefaultCommand>true</useDefaultCommand> |
- <runAllBuilders>true</runAllBuilders> |
- </target> |
- </buildTargets> |
- </storageModule> |
-</cproject> |
/trunk/.cproject |
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-text/plain |
\ No newline at end of property |
Index: trunk |
=================================================================== |
--- trunk (revision 9) |
+++ trunk (revision 1) |
/trunk |
Property changes: |
Deleted: svn:ignore |
## -1,5 +0,0 ## |
-Chapter 02 - addImages |
- |
-Chapter 01 - main1 |
- |
-Chapter 01 - main2 |