changeset 4:6509f5b1d795

updated and added makefile to compile C++ code using opencv in its directory, whipped up simple test to read the pixels in BW images
author Nicolas Saunier <nico@confins.net>
date Fri, 23 Oct 2009 00:26:47 -0400
parents ace29ecfb846
children 824c35230b73
files Makefile c/Makefile c/main.cpp
diffstat 3 files changed, 84 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Thu Oct 22 16:12:09 2009 -0400
+++ b/Makefile	Fri Oct 23 00:26:47 2009 -0400
@@ -1,3 +1,6 @@
 # put test for platform
 
-INCLUDE=./include
\ No newline at end of file
+INCLUDE=./include
+
+clibrary:
+	@cd $(PWD)/c && make
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/c/Makefile	Fri Oct 23 00:26:47 2009 -0400
@@ -0,0 +1,47 @@
+BUILD_DIR=../bin
+
+CXX = g++
+
+LDFLAGS = -lm
+LDFLAGS += -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_unit_test_framework-mt
+LDFLAGS += -lfltk
+
+CFLAGS = -Wall -W -Wextra
+# -DUSE_OPENCV
+UNAME = $(shell uname)
+
+ifneq ($(OPENCV), 0)
+	CFLAGS += -DUSE_OPENCV
+	LDFLAGS += -lhighgui -lcxcore -lcv -lml
+endif
+
+ifeq ($(UNAME), Linux)
+ 	LINUX_BOOST_PREFIX = /usr/local
+	CFLAGS += -DLINUX
+	EXE_EXTENSION=''
+else # windows
+	MINGW_HOME = 'C:\MinGW'
+	LDFLAGS += -mconsole -mwindows -lole32 -lwsock32 -luuid
+	EXE_EXTENSION='.exe'
+endif
+
+ifeq ($(DEBUG), 1)
+	CFLAGS += -g -gstabs+ -DDEBUG
+else
+	CFLAGS += -O3 --fast-math
+	CFLAGS += -DNDEBUG
+endif
+
+ifeq ($(PROFILING), 1)
+	CFLAGS += -pg
+endif
+
+CXXFLAGS = $(INCLUDE) $(CFLAGS)
+
+
+default: main.o
+#	@echo "default"
+	@createdirectory.sh $(BUILD_DIR)
+	$(CXX) $(CFLAGS) $(LIBS) $^ -o $(BUILD_DIR)/test-pixels $(LDFLAGS)
+
+#	$(CXX) $(CFLAGS) $(LIBS) $^ -o $(BUILD_DIR)/$@ $(LDFLAGS)
\ No newline at end of file
--- a/c/main.cpp	Thu Oct 22 16:12:09 2009 -0400
+++ b/c/main.cpp	Fri Oct 23 00:26:47 2009 -0400
@@ -1,10 +1,42 @@
+#include "opencv/cv.h"
+#include "opencv/highgui.h"
+
 #include <iostream>
 
 using namespace std;
 
+IplImage* allocateImage(const CvSize& size, const int& depth, const int& channels) {
+  IplImage* image = cvCreateImage(size, depth, channels);
+
+  if (!image) {
+    cerr << "Error: Couldn't allocate image.  Out of memory?\n" << endl;
+    exit(-1);
+  }
+
+  return image;
+}
+
 int main(int argc, char *argv[]) {
+  //cout << "Hello World" << endl;
+
+  CvCapture *inputVideo = cvCaptureFromFile(argv[1]);
 
-  cout << "Hello World" << endl;
+  IplImage* frame = cvQueryFrame(inputVideo);
+  IplImage* bwFrame = allocateImage(cvSize(frame->width, frame->height), IPL_DEPTH_8U, 1);
+
+  int frameNum = 0;
+  while (frame) {
+    if (frameNum%10 == 0)
+      cout << frameNum << endl;
+    cvConvertImage(frame, bwFrame);
+    
+    for (int i=0; i<frame->height; ++i)
+      for (int j=0; j<frame->width; ++j)
+	int gray = cvGetReal2D(bwFrame, i, j);
+
+    frame = cvQueryFrame(inputVideo);
+    frameNum++;
+  }
 
   return 1;
 }