今天接到的新任务,看能不能在摄像头的视场叠加一个视频和声音。
经过3个小时的努力还是成功了,openframework中的examples 真是无尽的宝藏啊,我在里面的一个opencvdemo中看到了一个面板中有3个视频的不同处理,这个代码给我启发,让我进一步了解了openframework这个开发包的套路,我打算在后面,多做几个例子后再仔细写一个openframework的工作机制和汉明码的识别与媒体叠加的工作过程,这里也就先放着,能够一步步在别人的代码上摸索出新的东西,虽然还不完全懂地依样画葫芦,但自己的热情也渐渐上涨,对它们的工作过程也渐渐有了深入的认识。
兴趣很重要。
这是源代码:
ofApp.cpp
#include "ofApp.h"
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
//--------------------------------------------------------------
void ofApp::setup(){
markNum = 0;
loopNum = 0;
markDuration = 0;
isFindMark = false;
ofSetLogLevel(OF_LOG_VERBOSE);
ofBackground(50, 0);
//ofSetWindowShape(640, 480);
ofSetWindowShape(640, 480);//设置面板(窗口)大小
bAnimate = true;
//ofSetVerticalSync(true);
/* initialize lighting */
ofEnableDepthTest();
ofDisableArbTex(); // we need GL_TEXTURE_2D for our models coords.
model.loadModel("sphere.3ds", true);
model.setScale(0.01f, 0.01f, 0.01f);
model.setRotation(0, 90, -2, 0, 0);
model.setLoopStateForAllAnimations(OF_LOOP_NORMAL);
model.playAllAnimations();
//if (bAnimate) {
//model.setPausedForAllAnimations(true);
//}
//m_models.push_back(model);
// }
//m_meshes.resize(model_names.size(), ofMesh());
m_video.setDeviceID(0);
m_video.initGrabber(640, 480);
Point3f corners_3d[] =
{
Point3f(-0.5f, -0.5f, 0),
Point3f(-0.5f, 0.5f, 0),
Point3f( 0.5f, 0.5f, 0),
Point3f( 0.5f, -0.5f, 0)
};
float camera_ma