ケンコー・トキナーの PRO1D R72 (赤外線透過フィルター) を使った風景写真が面白い。撮影や加工のコツがまだまだ掴めないけど、適当にやってもそれなりに不思議な感じに仕上がる。
samples/c/facedetect.cpp" をベースに、検出された顔の領域にモザイクをかけるようにしてみた。コードはgist:1148913へ。
$ sudo port selfupdate$ sudo port install opencv#include <opencv/cv.h>
#include <opencv/highgui.h>
IplImage* doCvGray(IplImage* in);
IplImage* doCanny(IplImage* in, double lowThresh, double highThresh, double aperture);
int main (int argc, const char * argv[])
{
cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);
cvNamedWindow ("Edge", CV_WINDOW_AUTOSIZE);
CvCapture *capture = cvCreateCameraCapture(0);
assert(capture != NULL);
IplImage *frame = 0;
IplImage *out = 0;
int c;
while (1) {
frame = cvQueryFrame (capture);
out = doCvGray(frame);
out = doCanny(out, 10, 100, 3);
cvShowImage("Capture", frame);
cvShowImage("Edge", out);
cvReleaseImage(&out);
c = cvWaitKey (2);
if (c == '\x1b')
break;
}
cvReleaseCapture (&capture);
cvDestroyWindow ("Capture");
cvDestroyWindow ("Edge");
return 0;
}
IplImage* doCvGray(IplImage* in){
IplImage* out = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);
cvCvtColor(in, out, CV_BGR2GRAY);
return out;
};
IplImage* doCanny(IplImage* in, double lowThresh, double highThresh, double aperture){
IplImage* out = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);
cvCanny(in, out, lowThresh, highThresh, aperture);
return out;
};はい、エッジ検出できておりますw