OpenCV基本プログラム
久々にOpenCVを使おうとすると毎回文法忘れてるのでまとめ.
読み込んだsample.jpgをグレースケールにして表示,保存.
#include <stdio.h> #include <stdlib.h> #pragma comment(lib,"cv.lib") #pragma comment(lib,"cxcore.lib") #pragma comment(lib,"cvaux.lib") #pragma comment(lib,"highgui.lib") #include <highgui.h> #define filename "sample.jpg" int main(void) { int x,y; uchar p[3],Gray; IplImage *src,*img; if((src=cvLoadImage(filename,CV_LOAD_IMAGE_COLOR))==0) return -1; if((img=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1))==0) return -1; for(y=0;y<src->height;y++){ for(x=0;x<src->width;x++){ p[0] = src->imageData[src->widthStep*y + x*3]; // B p[1] = src->imageData[src->widthStep*y + x*3 + 1]; // G p[2] = src->imageData[src->widthStep*y + x*3 + 2]; // R Gray = cvRound(0.114478*p[0] + 0.586611*p[1] + 0.298912*p[2]); // 整数値に丸め img->imageData[img->widthStep*y + x] = Gray; } } cvNamedWindow("Image",CV_WINDOW_AUTOSIZE); cvShowImage("Image",img); cvWaitKey(0); cvDestroyWindow("Image"); cvSaveImage("result.jpg",img); cvReleaseImage(&src); cvReleaseImage(&img); return 0; }
ちなみにグレースケール変換は cvCvtColor (src, img, CV_BGR2GRAY) を使っても一瞬で出来る.参照↓
http://opencv.jp/opencv-1.0.0/document/opencvref_cv_filters.html
ところでアルゴリズムってなに?
目的から現状を引いたもの?