OpenCV实现“素描”图像

在学习数字图像处理的过程中学习到图像分割的知识,图像分割包含边缘检测和区域生成。
图从网上随表找的,如侵权请告知删图
把一幅彩色图转换成这种图,可以得知,边界都明显的显示出来,也就是通过边缘检测的方式可以实现该功能。这里我用到的是LoG算子法实现此功能。
边缘检测原理是什么呢,在一个物体内部具有相似性,在边界的地方具有明显的差异。边缘是目标与目标之间,目标与背景之间的界限,图像的局部特性不连续。比如说灰度的突变、纹理结构的突变、颜色的突变。如何将变换方大,让变化明显。在数学中我们可以根据求导就扩大这种变化。但是求导在工程中存在的问题就是求导增大了噪声的影响,所以在进行求导之前加入高斯滤波器进行去噪。Laplacian算子相当于对图像进行求偏导,也就实现了增大这种变化。

      cv::Mat image_RGB = cv::imread("C1.jpg", cv::IMREAD_COLOR);   //read picture
      if(image.empty())
          qDebug()<<"init photo is empty";

      cv::Mat face_WB;

      cvtColor(image_RGB,face_WB,COLOR_BGR2GRAY);
      const int MEDIAN_BLUR_FILTER_SIZE = 5;
      medianBlur(face_WB,face_WB,MEDIAN_BLUR_FILTER_SIZE);

      Mat edges;
      Laplacian(face_WB,edges,CV_8U,5);
      Mat maskk;
      threshold(edges,maskk,100,255,THRESH_BINARY_INV);
      resize(maskk,printImg,Size(600,800));
      cv::imshow("9",printImg);

最终效果图为在这里插入图片描述
由于是边缘点检测,我们可以看到,对于线条的检测不够好,出现了许多斑点状。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值