diff --git a/example-ofxCvPiCamSimple/.gitignore b/example-ofxCvPiCamSimple/.gitignore new file mode 100755 index 0000000..028d580 --- /dev/null +++ b/example-ofxCvPiCamSimple/.gitignore @@ -0,0 +1,7 @@ +libs +obj +*.app +*/bin/* +!*/bin/data +*._* +*2013*.jpg diff --git a/example-ofxCvPiCamSimple/Makefile b/example-ofxCvPiCamSimple/Makefile new file mode 100644 index 0000000..7a7fe8b --- /dev/null +++ b/example-ofxCvPiCamSimple/Makefile @@ -0,0 +1,13 @@ +# Attempt to load a config.make file. +# If none is found, project defaults in config.project.make will be used. +ifneq ($(wildcard config.make),) + include config.make +endif + +# make sure the the OF_ROOT location is defined +ifndef OF_ROOT + OF_ROOT=../../.. +endif + +# call the project makefile! +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/example-ofxCvPiCamSimple/addons.make b/example-ofxCvPiCamSimple/addons.make new file mode 100644 index 0000000..4dc9230 --- /dev/null +++ b/example-ofxCvPiCamSimple/addons.make @@ -0,0 +1,4 @@ + +ofxOpenCv +ofxCv +ofxCvPiCam \ No newline at end of file diff --git a/example-ofxCvPiCamSimple/config.make b/example-ofxCvPiCamSimple/config.make new file mode 100755 index 0000000..df10f64 --- /dev/null +++ b/example-ofxCvPiCamSimple/config.make @@ -0,0 +1,142 @@ +################################################################################ +# CONFIGURE PROJECT MAKEFILE (optional) +# This file is where we make project specific configurations. +################################################################################ + +################################################################################ +# OF ROOT +# The location of your root openFrameworks installation +# (default) OF_ROOT = ../../.. +################################################################################ +# OF_ROOT = ../../.. + +################################################################################ +# PROJECT ROOT +# The location of the project - a starting place for searching for files +# (default) PROJECT_ROOT = . (this directory) +# +################################################################################ +# PROJECT_ROOT = . + +################################################################################ +# PROJECT SPECIFIC CHECKS +# This is a project defined section to create internal makefile flags to +# conditionally enable or disable the addition of various features within +# this makefile. For instance, if you want to make changes based on whether +# GTK is installed, one might test that here and create a variable to check. +################################################################################ +# None + +################################################################################ +# PROJECT EXTERNAL SOURCE PATHS +# These are fully qualified paths that are not within the PROJECT_ROOT folder. +# Like source folders in the PROJECT_ROOT, these paths are subject to +# exlclusion via the PROJECT_EXLCUSIONS list. +# +# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_EXTERNAL_SOURCE_PATHS = + +################################################################################ +# PROJECT EXCLUSIONS +# These makefiles assume that all folders in your current project directory +# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations +# to look for source code. The any folders or files that match any of the +# items in the PROJECT_EXCLUSIONS list below will be ignored. +# +# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete +# string unless teh user adds a wildcard (%) operator to match subdirectories. +# GNU make only allows one wildcard for matching. The second wildcard (%) is +# treated literally. +# +# (default) PROJECT_EXCLUSIONS = (blank) +# +# Will automatically exclude the following: +# +# $(PROJECT_ROOT)/bin% +# $(PROJECT_ROOT)/obj% +# $(PROJECT_ROOT)/%.xcodeproj +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_EXCLUSIONS = + +################################################################################ +# PROJECT LINKER FLAGS +# These flags will be sent to the linker when compiling the executable. +# +# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ + +# Currently, shared libraries that are needed are copied to the +# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to +# add a runtime path to search for those shared libraries, since they aren't +# incorporated directly into the final executable application binary. +# TODO: should this be a default setting? +# PROJECT_LDFLAGS=-Wl,-rpath=./libs + +################################################################################ +# PROJECT DEFINES +# Create a space-delimited list of DEFINES. The list will be converted into +# CFLAGS with the "-D" flag later in the makefile. +# +# (default) PROJECT_DEFINES = (blank) +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_DEFINES = + +################################################################################ +# PROJECT CFLAGS +# This is a list of fully qualified CFLAGS required when compiling for this +# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS +# defined in your platform specific core configuration files. These flags are +# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. +# +# (default) PROJECT_CFLAGS = (blank) +# +# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in +# your platform specific configuration file will be applied by default and +# further flags here may not be needed. +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_CFLAGS = + +################################################################################ +# PROJECT OPTIMIZATION CFLAGS +# These are lists of CFLAGS that are target-specific. While any flags could +# be conditionally added, they are usually limited to optimization flags. +# These flags are added BEFORE the PROJECT_CFLAGS. +# +# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. +# +# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) +# +# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. +# +# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) +# +# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the +# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration +# file will be applied by default and further optimization flags here may not +# be needed. +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_OPTIMIZATION_CFLAGS_RELEASE = +# PROJECT_OPTIMIZATION_CFLAGS_DEBUG = + +################################################################################ +# PROJECT COMPILERS +# Custom compilers can be set for CC and CXX +# (default) PROJECT_CXX = (blank) +# (default) PROJECT_CC = (blank) +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_CXX = +# PROJECT_CC = diff --git a/example-ofxCvPiCamSimple/src/ConsoleListener.h b/example-ofxCvPiCamSimple/src/ConsoleListener.h new file mode 100755 index 0000000..7bd0466 --- /dev/null +++ b/example-ofxCvPiCamSimple/src/ConsoleListener.h @@ -0,0 +1,81 @@ +#pragma once + +#include "ofMain.h" + +class SSHKeyListenerEventData +{ +public: + SSHKeyListenerEventData(char character_) + { + character = character_; + } + char character; +}; + +class SSHKeyListener +{ +public: + virtual void onCharacterReceived(SSHKeyListenerEventData& e) = 0; +}; + +class ConsoleListener: public ofThread +{ +public: + SSHKeyListener* listener; + ConsoleListener() + { + listener = NULL; + } + void setup(SSHKeyListener* listener_) + { + listener = listener_; + } + void threadedFunction() + { + while (isThreadRunning()) + { + char buffer[10]; + while(fgets(buffer, 10 , stdin) != NULL) + { + //ofLogVerbose() << buffer; + SSHKeyListenerEventData eventData(buffer[0]); + listener->onCharacterReceived(eventData); + } + } + } + +}; + + + +#if 0 +USAGE: + +1.add to testApp.h + +#include "ConsoleListener.h" + +//extend testApp +class testApp : public ofBaseApp, public SSHKeyListener + +2. add required callback definition + +void onCharacterReceived(SSHKeyListenerEventData& e); + + +3. add to testApp.cpp + + void testApp::onCharacterReceived(SSHKeyListenerEventData& e) + { + keyPressed((int)e.character); + } + +4. and later + void testApp::keyPressed (int key){ + + if (key == 'e') + { + ofLogVerbose() << "e pressed!"; + } + } +#endif \ No newline at end of file diff --git a/example-ofxCvPiCamSimple/src/main.cpp b/example-ofxCvPiCamSimple/src/main.cpp new file mode 100755 index 0000000..613e5ea --- /dev/null +++ b/example-ofxCvPiCamSimple/src/main.cpp @@ -0,0 +1,10 @@ +#include "ofMain.h" +#include "testApp.h" +//======================================================================== +int main( ){ + + ofSetLogLevel(OF_LOG_VERBOSE); + ofSetupOpenGL(1280,720, OF_WINDOW); // <-------- setup the GL context + ofRunApp( new testApp()); + +} diff --git a/example-ofxCvPiCamSimple/src/testApp.cpp b/example-ofxCvPiCamSimple/src/testApp.cpp new file mode 100755 index 0000000..b6f61b2 --- /dev/null +++ b/example-ofxCvPiCamSimple/src/testApp.cpp @@ -0,0 +1,82 @@ +#include "testApp.h" +#include + +using namespace ofxCv; +using namespace cv; + +Mat frame,frameProcessed; + +void testApp::onCharacterReceived(SSHKeyListenerEventData& e) +{ + keyPressed((int)e.character); +} +//-------------------------------------------------------------- +void testApp::setup(){ + consoleListener.setup(this); + consoleListener.startThread(false, false); + + cam.setup(320,240,false);//setup camera (w,h,color = true,gray = false); + thresh = 127; +} + +//-------------------------------------------------------------- +void testApp::update(){ + frame = cam.grab(); +} + +//-------------------------------------------------------------- +void testApp::draw(){ + if(!frame.empty()) { + threshold(frame,frameProcessed,thresh,255,0); + drawMat(frame,0,0); + drawMat(frameProcessed,320,0); + } + ofDrawBitmapString("threshold: " + ofToString(thresh),320,10); +} + +//-------------------------------------------------------------- +void testApp::keyPressed (int key){ + ofLogVerbose() << "keyPressed: " << key; + if(key == 't' && thresh > 0) thresh--; + if(key == 'T' && thresh < 255) thresh++; +} + +//-------------------------------------------------------------- +void testApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void testApp::mouseMoved(int x, int y ){ + +} + +//-------------------------------------------------------------- +void testApp::mouseDragged(int x, int y, int button){ + thresh = ofMap(x,0,ofGetWidth(),0,255); +} + +//-------------------------------------------------------------- +void testApp::mousePressed(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mouseReleased(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::windowResized(int w, int h){ + +} + +//-------------------------------------------------------------- +void testApp::gotMessage(ofMessage msg){ + +} + +//-------------------------------------------------------------- +void testApp::dragEvent(ofDragInfo dragInfo){ + +} diff --git a/example-ofxCvPiCamSimple/src/testApp.h b/example-ofxCvPiCamSimple/src/testApp.h new file mode 100755 index 0000000..95d76a7 --- /dev/null +++ b/example-ofxCvPiCamSimple/src/testApp.h @@ -0,0 +1,32 @@ +#pragma once + +#include "ofMain.h" +#include "ofxCv.h" +#include "ofxCvPiCam.h" +#include "ConsoleListener.h" + + +class testApp : public ofBaseApp, public SSHKeyListener{ + + public: + + void setup(); + void update(); + void draw(); + + void keyPressed(int key); + void keyReleased(int key); + void mouseMoved(int x, int y ); + void mouseDragged(int x, int y, int button); + void mousePressed(int x, int y, int button); + void mouseReleased(int x, int y, int button); + void windowResized(int w, int h); + void dragEvent(ofDragInfo dragInfo); + void gotMessage(ofMessage msg); + + int thresh; + ofxCvPiCam cam; + ConsoleListener consoleListener; + void onCharacterReceived(SSHKeyListenerEventData& e); +}; +