Skip to content

Instantly share code, notes, and snippets.

@kissarat
Last active August 17, 2016 11:47
Show Gist options
  • Save kissarat/11132409 to your computer and use it in GitHub Desktop.
Save kissarat/11132409 to your computer and use it in GitHub Desktop.
#include <iostream>
#include "opencv2/opencv.hpp"
#define brk imshow("1", m1); if (waitKey(5) >= 0) break;
using namespace cv;
using namespace std;
Mat lookup(1, 256, CV_8U);
void make_lookup(uchar k) {
uchar* p = lookup.data;
for(int i=0; i<16; i++)
for(int j=0; j<16; j++)
p[i*16 + j] = (uchar) i*(j + k);
}
int main(int, char**) {
VideoCapture cap(0);
//cap.open("/home/taras/Videos/Aeroplan.1980.BDRip.avi");
if (!cap.isOpened())
return -1;
cout << cap.get(CV_CAP_PROP_FRAME_WIDTH) << "x"
<< cap.get(CV_CAP_PROP_FRAME_HEIGHT) << endl;
cap.set(CV_CAP_PROP_POS_FRAMES, 30000);
namedWindow("1", 1);
make_lookup(0);
Mat kern = (Mat_<char>(3,3) << 0, -1, 0,
-1, 5, -1,
0, -1, 0);
int a = 0, b = 64, c = 128, d = 192;
while(true) {
Mat m1, m2, m3, m4, m5;
cap >> m2;
//resize(m1, m2, Size(1056, 600));
GaussianBlur(m2, m1, Size(11,11), 5, 5);
make_lookup(a++);
LUT(m1, lookup, m2);
make_lookup(b--);
LUT(m1, lookup, m3);
addWeighted(m2, ((double)c)/255, m3, ((double)d)/255, 0.0, m1);
//brk
make_lookup(c++);
LUT(m1, lookup, m4);
make_lookup(d--);
LUT(m1, lookup, m5);
addWeighted(m4, ((double)a)/255, m5, ((double)b)/255, 0.0, m1);
addWeighted(m1, 0.5, m2, 0.5, 0.0, m3);
filter2D(m3, m2, m3.depth(), kern );
GaussianBlur(m2, m1, Size(3,3), 1, 1);
brk
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment