Commit 06b0fa6f authored by laurentBerger's avatar laurentBerger

BLOB_MSER avec opengl

parent e7fcffee
#include <opencv2/opencv.hpp> #include <opencv2/opencv.hpp>
#include "opencv2/core/opengl.hpp"
#include <vector> #include <vector>
#include <map> #include <map>
#include <iostream> #include <iostream>
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN 1
#define NOMINMAX 1
#include <windows.h>
#endif
#if defined(_WIN64)
#include <windows.h>
#endif
#if defined(__APPLE__)
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
#include <GL/gl.h>
#include <GL/glu.h>
#endif
using namespace std; using namespace std;
using namespace cv; using namespace cv;
void Example_MSER(vector<String> &fileName); void Example_MSER(vector<String> &fileName);
static void help() static void help()
...@@ -96,10 +115,84 @@ String Legende(SimpleBlobDetector::Params &pAct) ...@@ -96,10 +115,84 @@ String Legende(SimpleBlobDetector::Params &pAct)
} }
const int win_width = 800;
const int win_height = 640;
struct DrawData
{
ogl::Arrays arr;
ogl::Texture2D tex;
ogl::Buffer indices;
};
void draw(void* userdata);
void draw(void* userdata)
{
DrawData* data = static_cast<DrawData*>(userdata);
glRotated(0.6, 0, 1, 0);
ogl::render(data->arr, data->indices, ogl::TRIANGLES);
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
Mat imgcol = imread("../data/lena.jpg");
namedWindow("OpenGL", WINDOW_OPENGL);
//resizeWindow("OpenGL", win_width, win_height);
Mat_<Vec3f> vertex(1, 4);
vertex << Vec3f(-1, 1,0), Vec3f(-1, -1,0), Vec3f(1, -1,1), Vec3f(1, 1,-1);
Mat_<Vec2f> texCoords(1, 4);
texCoords << Vec2f(0, 0), Vec2f(0, 1), Vec2f(1, 1), Vec2f(1, 0);
Mat_<int> indices(1, 6);
indices << 0, 1, 2,2, 3, 0;
DrawData *data = new DrawData;
data->arr.setVertexArray(vertex);
data->arr.setTexCoordArray(texCoords);
data->indices.copyFrom(indices);
data->tex.copyFrom(imgcol);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (double)win_width / win_height, 0.1, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 3, 0, 0, 0, 0, 1, 0);
glEnable(GL_TEXTURE_2D);
data->tex.bind();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvi(GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glDisable(GL_CULL_FACE);
setOpenGlDrawCallback("OpenGL", draw, data);
for (;;)
{
updateWindow("OpenGL");
int key = waitKey(40);
if ((key & 0xff) == 27)
break;
}
setOpenGlDrawCallback("OpenGL", 0, 0);
destroyAllWindows();
vector<String> fileName; vector<String> fileName;
Example_MSER(fileName); Example_MSER(fileName);
Mat img(600,800,CV_8UC1); Mat img(600,800,CV_8UC1);
...@@ -339,6 +432,11 @@ void Example_MSER(vector<String> &fileName) ...@@ -339,6 +432,11 @@ void Example_MSER(vector<String> &fileName)
} }
int channel = 1; int channel = 1;
int histSize = 256 ; int histSize = 256 ;
float range[] = { 0, 256 }; float range[] = { 0, 256 };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment