Skip to content
Snippets Groups Projects
Commit a62c5805 authored by Joe's avatar Joe
Browse files

Added image aquisition code

parent 224e547d
No related branches found
No related tags found
No related merge requests found
#! /bin/sh
./configure
./build
./run
\ No newline at end of file
#! /bin/sh
cd out/build;
make;
#! /bin/sh
cmake -S src -B out/build;
\ No newline at end of file
#! /bin/sh
cd out/build;
./imageCapture
\ No newline at end of file
cmake_minimum_required (VERSION 2.8)
project(imageCapture)
set(raspicam_DIR "/usr/local/lib/cmake")
SET(public_hdrs_base raspicamtypes.h raspicam.h raspicam_still.h)
find_package(
raspicam REQUIRED
wiringPi REQUIRED
Threads REQUIRED
)
add_executable (
${PROJECT_NAME} main.cpp
)
find_library(
WIRINGPI_LIBRARIES NAMES wiringPi
)
target_link_libraries(
${PROJECT_NAME}
${raspicam_LIBS}
${WIRINGPI_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
)
include_directories(
${WIRINGPI_INCLUDE_DIRS}
)
\ No newline at end of file
#include <ctime>
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <chrono>
#include <thread>
#include <wiringPi.h>
#include <raspicam/raspicam.h>
const int WIDTH = 4056;
const int HEIGHT = 3040;
using namespace std;
/*
int initialise(raspicam::RaspiCam_Still* Camera){
Camera->setCaptureSize(WIDTH,HEIGHT);
Camera->setWidth(WIDTH);
Camera->setHeight(HEIGHT);
Camera->setEncoding(
raspicam::RASPICAM_ENCODING_RGB
);
Camera->setExposure(
raspicam::RASPICAM_EXPOSURE_OFF
);
Camera->setAWB(
raspicam::RASPICAM_AWB_OFF
);
Camera->setImageEffect(
raspicam::RASPICAM_IMAGE_EFFECT_NONE
);
Camera->setMetering(
raspicam::RASPICAM_METERING_AVERAGE
);
Camera->commitParameters();
return 0;
}
*/
int main ( int argc,char **argv ) {
raspicam::RaspiCam Camera;
//Init
Camera.setCaptureSize(WIDTH,HEIGHT);
Camera.setWidth(WIDTH);
Camera.setHeight(HEIGHT);
Camera.setFormat(
raspicam::RASPICAM_FORMAT_RGB
);
//this_thread::sleep_for(std::chrono::milliseconds(1000));
//Camera.commitParameters();
cout<<"Opening Camera..."<<endl;
if ( !Camera.open()) {cerr<<"Error opening camera"<<endl;return -1;}
//EndInit
//Wait
cout << "Sleeping..."<<endl;
this_thread::sleep_for(std::chrono::milliseconds(3000));
//EndWait
//Capture
int length = Camera.getImageBufferSize();
cout << length << endl;
unsigned char* data=new unsigned char[ length ];
cout << "HERE"<<endl;
Camera.grab();
Camera.retrieve(data);
cout << "THERE"<<endl;
//save
std::ofstream outFile ("test.rgb",std::ios::binary);
cout << Camera.getWidth() << " " <<Camera.getHeight()<< endl;
outFile<<"P6\n"<< Camera.getWidth() <<" "<< Camera.getHeight() <<" 255\n";
outFile.write ( ( char* ) data, length );
cout<<"Image saved "<<endl;
//free resrources
delete data;
//EndCapture
Camera.release();
cout << "Finished" << endl;
return 0;
}
#include <ctime>
#include <fstream>
#include <iostream>
#include <wiringPi.h>
#include <raspicam/raspicam.h>
using namespace std;
int main ( int argc,char **argv ) {
raspicam::RaspiCam Camera; //Cmaera object
//Open camera
cout<<"Opening Camera..."<<endl;
if ( !Camera.open()) {cerr<<"Error opening camera"<<endl;return -1;}
//wait a while until camera stabilizes
cout<<"Sleeping for 3 secs"<<endl;
struct timespec req, rem;
req.tv_sec = 3000 / 1000;
nanosleep(&req, &rem);
//capture
Camera.grab();
//allocate memory
unsigned char *data=new unsigned char[ Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB )];
//extract the image in rgb format
Camera.retrieve ( data,raspicam::RASPICAM_FORMAT_RGB );//get camera image
//save
std::ofstream outFile ( "raspicam_image.ppm",std::ios::binary );
outFile<<"P6\n"<<Camera.getWidth() <<" "<<Camera.getHeight() <<" 255\n";
outFile.write ( ( char* ) data, Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB ) );
cout<<"Image saved at raspicam_image.ppm"<<endl;
//free resrources
delete data;
return 0;
}
\ No newline at end of file
#include <ctime>
#include <fstream>
#include <iostream>
#include <stdexcept>
#include <stdio.h>
#include <chrono>
#include <thread>
#include <wiringPi.h>
#include <raspicam/raspicam.h>
using namespace std;
const int PIN_TRIGGER_IN = 17;
const int PIN_TIMER_TRIGGER_OUT = 27;
const int PIN_STEPPER_TRIGGER_OUT = 14;
const int PIN_STEPPER_RESET_OUT = 15;
const int WIDTH = 4056;
const int HEIGHT = 3040;
const int FRAMERATE = 1;
int cameraInit(raspicam::RaspiCam* camera){
camera->setCaptureSize(WIDTH, HEIGHT);
camera->setWidth(WIDTH);
camera->setHeight(HEIGHT);
camera->setFormat(raspicam::RASPICAM_FORMAT_RGB);
camera->setVideoStabilization(false);
camera->setAWB(raspicam::RASPICAM_AWB_OFF);
camera->setImageEffect(raspicam::RASPICAM_IMAGE_EFFECT_NONE);
camera->setISO(100);
//camera->setFrameRate(1);
camera->setShutterSpeed(1000000);
camera->setSensorMode(3);
cout<<"Opening Camera..."<<endl;
if ( !camera->open(false)) {cerr<<"Error opening camera"<<endl;return -1;}
return 0;
}
int gpioInit(){
// Broadcom pin referencing
wiringPiSetupGpio();
// Set trigger pin as input
pinMode(PIN_TRIGGER_IN,INPUT);
pinMode(PIN_TIMER_TRIGGER_OUT,OUTPUT);
pinMode(PIN_STEPPER_TRIGGER_OUT,OUTPUT);
pinMode(PIN_STEPPER_RESET_OUT,OUTPUT);
digitalWrite(PIN_TIMER_TRIGGER_OUT,0);
digitalWrite(PIN_STEPPER_TRIGGER_OUT,0);
digitalWrite(PIN_STEPPER_RESET_OUT,0);
// Set pulldown
pullUpDnControl(PIN_TRIGGER_IN, PUD_DOWN);
pullUpDnControl(PIN_TIMER_TRIGGER_OUT, PUD_DOWN);
pullUpDnControl(PIN_STEPPER_TRIGGER_OUT, PUD_DOWN);
pullUpDnControl(PIN_STEPPER_RESET_OUT, PUD_DOWN);
return 0;
}
void save(string path, unsigned char* data, int length){
std::ofstream outFile (path, std::ios::binary);
outFile<<"P6\n"<< WIDTH <<" "<< HEIGHT <<" 255\n";
outFile.write ( ( char* ) data, length );
}
int capture( raspicam::RaspiCam* camera, string path ){
int length = camera->getImageBufferSize();
unsigned char* data=new unsigned char[ length ];
camera->grab();
camera->retrieve(data);
save(path, data, length);
cout<<"Image saved "<<endl;
//free resrources
delete data;
return 0;
}
int main(int argc, char** argv){
raspicam::RaspiCam camera;
// Setup gpio
gpioInit();
// Setup and configure camera
cameraInit(&camera);
/*
cout << "Waiting on trigger" << endl;
while( true ){
if(digitalRead(PIN_TRIGGER_IN)){
break;
}
}
*/
/*
digitalWrite(PIN_STEPPER_TRIGGER_OUT,1);
this_thread::sleep_for(std::chrono::milliseconds(80));
digitalWrite(PIN_STEPPER_TRIGGER_OUT,0);
this_thread::sleep_for(std::chrono::milliseconds(2000));
"/home/pi/mnt/js-lpt/initialTesting/Test3/9.jpg"
*/
this_thread::sleep_for(std::chrono::milliseconds(1000));
cout << "Starting capture" << endl;
camera.startCapture();
this_thread::sleep_for(std::chrono::milliseconds(125));
digitalWrite(PIN_TIMER_TRIGGER_OUT,1);
this_thread::sleep_for(std::chrono::milliseconds(100));
capture(&camera,argv[1]);
digitalWrite(PIN_TIMER_TRIGGER_OUT,0);
return 0;
}
File moved
File moved
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment