1. 程式人生 > >opencv筆記十一(膨脹腐蝕)erode,dilate,getStructuringElement,createTrackbar

opencv筆記十一(膨脹腐蝕)erode,dilate,getStructuringElement,createTrackbar

膨脹:dilate(Mat src,Mat out,Mat getStructuringElement);

腐蝕:erode(Mat src,Mat out,Mat getStructuringElement);

動態調整結構元素大小:

createTrackbar(const String & trackbarname, const String winName, int* value, int count, Trackbarcallback func, void* userdata=0)

函式詳解:https://blog.csdn.net/keith_bb/article/details/53174484

  1. #include <opencv2/opencv.hpp>
  2. #include <iostream>
  3. using namespace cv;
  4. Mat src, dst;
  5. char OUTPUT_WIN[] = "output image";
  6. int element_size = 3;
  7. int max_size = 21;
  8. void CallBack_Demo(int, void*);
  9. int main(int argc, char** argv) {
  10. src = imread("D:/vcprojects/images/test1.png");
  11. if (!src.data) {
  12. printf
    ("could not load image...\n");
  13. return -1;
  14. }
  15. namedWindow("input image", CV_WINDOW_AUTOSIZE);
  16. imshow("input image", src);
  17. namedWindow(OUTPUT_WIN, CV_WINDOW_AUTOSIZE);
  18. createTrackbar("Element Size :", OUTPUT_WIN, &element_size, max_size, CallBack_Demo);
  19. CallBack_Demo(0, 0);
  20. waitKey(0);
  21. return 0;
  22. }
  23. void CallBack_Demo
    (int, void*)
    {
  24. int s = element_size * 2 + 1;
  25. Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
  26. // dilate(src, dst, structureElement, Point(-1, -1), 1);
  27. erode(src, dst, structureElement);
  28. imshow(OUTPUT_WIN, dst);
  29. return;
  30. }