#include "ofApp.h"
//--------------------------------------------------------------
void ofApp::setup(){
ofBackground(0,0,0);
// try to grab at this size
camWidth = 640;
camHeight = 480;
vidGrabber.setVerbose(true);
vidGrabber.setup(camWidth,camHeight);
font.load("Courier New Bold.ttf", 9);
// this set of characters comes from the Ascii Video Processing example by Ben Fry,
// changed order slightly to work better for mapping
asciiCharacters = string(" ..,,,'''``--_:;^^**""=+<>iv%&xclrs)/){}I?!][1taeo7zjLunT#@JCwfy325Fp6mqSghVd4EgXPGZbYkOA8U$KHDBWNMR0Q");
ofEnableAlphaBlending();
}
//--------------------------------------------------------------
void ofApp::update(){
vidGrabber.update();
}
//--------------------------------------------------------------
void ofApp::draw(){
// change background video alpha value based on the cursor's x-position
float videoAlphaValue = ofMap(mouseX, 0, ofGetWidth(), 0, 255);
// set a white fill color with the alpha generated above
ofSetColor(255,255,255,videoAlphaValue);
// draw the raw video frame with the alpha value generated above
vidGrabber.draw(0,0);
ofPixelsRef pixelsRef = vidGrabber.getPixels();
ofSetHexColor(0xffffff);
for (int i = 0; i < camWidth; i+= 7){
for (int j = 0; j < camHeight; j+= 9){
// get the pixel and its lightness (lightness is the average of its RGB values)
float lightness = pixelsRef.getColor(i,j).getLightness();
// calculate the index of the character from our asciiCharacters array
int character = powf( ofMap(lightness, 0, 255, 0, 1), 2.5) * asciiCharacters.size();
// draw the character at the correct location
font.drawString(ofToString(asciiCharacters[character]), i, j);
}
}
}
//--------------------------------------------------------------
void ofApp::keyPressed (int key){
// in fullscreen mode, on a pc at least, the
// first time video settings the come up
// they come up *under* the fullscreen window
// use alt-tab to navigate to the settings
// window. we are working on a fix for this...
if (key == 's' || key == 'S'){
vidGrabber.videoSettings();
}
}
//--------------------------------------------------------------
void ofApp::keyReleased(int key){
}
//--------------------------------------------------------------
void ofApp::mouseMoved(int x, int y ){
}
//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button){
}
//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){
}
//--------------------------------------------------------------
void ofApp::mouseReleased(int x, int y, int button){
}
//--------------------------------------------------------------
void ofApp::mouseEntered(int x, int y){
}
//--------------------------------------------------------------
void ofApp::mouseExited(int x, int y){
}
//--------------------------------------------------------------
void ofApp::windowResized(int w, int h){
}
//--------------------------------------------------------------
void ofApp::gotMessage(ofMessage msg){
}
//--------------------------------------------------------------
void ofApp::dragEvent(ofDragInfo dragInfo){
}
Comments