PageRenderTime 81ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/OpenCV/cvtest.c

https://github.com/i03nomura1y/Sample
C | 47 lines | 28 code | 10 blank | 9 comment | 3 complexity | 3bf44c677cf6dbdd0737063acf035fbc MD5 | raw file
  1. /// ソーベルフィルタ
  2. // http://opencv.jp/sample/gradient_edge_corner.html
  3. // gcc -o cvtest cvtest.c -I/usr/include/opencv -lcvaux -lcxcore -lcv -lhighgui
  4. // gcc -o cvtest cvtest.c `pkg-config --cflags --libs opencv`
  5. #include <stdio.h>
  6. #include <cv.h>
  7. #include <highgui.h>
  8. #define SRC "Gray"
  9. #define DST "Sobel"
  10. int main (int argc, char **argv){
  11. IplImage *src_img, *dst_img, *tmp_img;
  12. // 画像の読み込み(グレースケールで読み込み)
  13. if (argc != 2 ||
  14. (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0){
  15. fprintf(stderr,"Usage: $ %s img_file\n",argv[0]);
  16. return -1;
  17. }
  18. tmp_img = cvCreateImage(cvGetSize(src_img), IPL_DEPTH_16S, 1);
  19. dst_img = cvCreateImage(cvGetSize(src_img), IPL_DEPTH_8U, 1);
  20. // Sobelフィルタによる微分画像の作成
  21. cvSobel(src_img, tmp_img, 1, 0, 3);
  22. cvConvertScaleAbs(tmp_img, dst_img,1,0);
  23. // 画像の表示
  24. cvNamedWindow(SRC, CV_WINDOW_AUTOSIZE);
  25. cvShowImage(SRC, src_img);
  26. cvNamedWindow(DST, CV_WINDOW_AUTOSIZE);
  27. cvShowImage(DST, dst_img);
  28. // ユーザ入力待ち
  29. cvWaitKey(0);
  30. // 後始末
  31. cvDestroyWindow(SRC);
  32. cvDestroyWindow(DST);
  33. cvReleaseImage(&src_img);
  34. cvReleaseImage(&dst_img);
  35. cvReleaseImage(&tmp_img);
  36. return 0;
  37. }