答え
#include <cv.h>
#include <highgui.h>
#include <cstdio>
float data[3][3] =
{
{-1,-1,-1},
{-1, 9, -1},
{-1, -1, -1}
};
int main( int argc, char **argv)
{
IplImage *image = cvLoadImage( "test2.jpg", CV_LOAD_IMAGE_GRAYSCALE);
if(image ==NULL)
{
printf("File not found\n");
exit(0);
}
CvMat kernel = cvMat (3,3, CV_32F, &data[0]); //先頭アドレスを渡す
cvFilter2D (image, image, &kernel);
cvNamedWindow("window",CV_WINDOW_AUTOSIZE);
cvShowImage("window",image);
cvWaitKey(0);
cvReleaseImage( & image);
cvDestroyWindow("window");
return 0;
}
メモ
カラーも気にせずにできるっぽい。
以下が一般的な「鮮鋭化フィルタ」
0, -k, 0
-k, 1+4K, -k
0, -k, 0
または、
-k, -k, -k
-k, 1+8k, -k
-k, -k, -k
ただし、k > 0。