Welcome to qwook.io
Welcome to qwook.io
My name is Henry Quoc Tran. I am currently 32 years old. I grew up in Milpitas, California. I live in Saigon, Vietnam. Previously: San Francisco, California. I like to develop games! I am Vietnamese and Chinese. I live life through quests. 
Currently, I am in Saigon focused on learning Vietnamese and hosting events and movie nights. Recently I made a translation of the One Night Ultimate Werewolf app in Vietnamese!
I love magic, one of my heroes is Derren Brown. Click here to get your digital palm read!
I have a habit of scrolling endlessly through old Geocities pages – remnants of the old internet. Or stalking people 20 years older than me, who I used to play games and learn how to program with. I find it interesting how I am now their age when they first talked to me. Most of them disappeared off the internet. I wonder what happened, and I wonder if I'll also, one day, disappear.

//
// main.cpp
// VisionTest
//
// Created by hen on 8/14/14.
// Copyright (c) 2014 qwook. All rights reserved.
//
#include <iostream>
#include <opencv2/opencv.hpp>
#include <zlib.h>
using namespace cv;
using namespace std;
int main(int argc, const char * argv[])
{
VideoCapture cam(0);
Mat frameOriginal;
Mat saved;
Mat previous;
Mat frame;
Mat flow;
// SIFT extractor;
char key;
bool first = true;
while (true) {
cam >> frameOriginal;
resize(frameOriginal, frame, Size(frameOriginal.cols/2, frameOriginal.rows/2));
if (key == 'q') break;
if (key == 'c' or first) {
first = false;
frame.copyTo(saved);
// resize(frame, saved, Size(frame.cols/4, frame.rows/4));
}
if (key == 'a') {
if (!previous.empty()) {
Mat previousGrey;
cvtColor(previous, previousGrey, COLOR_BGR2GRAY);
Mat frameGrey;
cvtColor(frame, frameGrey, COLOR_BGR2GRAY);
// calcOpticalFlowFarneback(previousGrey, frameGrey, flow, 0.5f, 3, 15, 3, 5, 1.2, OPTFLOW_FARNEBACK_GAUSSIAN);
calcOpticalFlowFarneback(previousGrey, frameGrey, flow, 0.5f, 3, 15, 3, 5, 1.2, 0);
}
frame.copyTo(previous);
const int rows = flow.rows;
const int cols = flow.cols;
const int saved_rows = saved.rows;
const int saved_cols = saved.cols;
Mat oldSaved;
saved.copyTo(oldSaved);
for (int y = 0; y < rows; y+=1) {
for (int x = 0; x < cols; x+=1) {
Vec2f flowVec = flow.at<Vec2f>(y, x);
// line(saved, Point2f(x + flowVec[0], y + flowVec[1]), Point2f(x + flowVec[0], y + flowVec[1]), Scalar(255, 0, 0));
Vec3b pixel = oldSaved.at<Vec3b>(y, x);
saved.at<Vec3b>((int)MAX(MIN(round((y + flowVec[1])), saved_rows-1), 0), (int)MAX(MIN(round((x + flowVec[0])), saved_cols-1), 0)) = pixel;
// saved.at<Vec3b>(y, x) = Vec3b(flowVec[0]*127, flowVec[1]*127, flowVec[0]*127);
}
}
}
key = waitKey(1);
imshow("window", saved);
}
return 0;
}
I like to explore nostalgia, trauma, and the deterioration of the internet. I also like happy things too like matcha mochi donuts. 
►Also, I guess I am a bunch of other stuff...

These are links to some cool people that I added without their permission. Please message me if you want your link removed.