OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 625|回复: 7

请教大家如何提取绣花形状二值图

[复制链接]
发表于 2019-6-2 16:09:30 | 显示全部楼层 |阅读模式
这是原图

我使用自适应转成二值图,但是无法去除底布

请大家能给点建议,如何能比较好的提取绣花的外形图,谢谢!
回复

使用道具 举报

 楼主| 发表于 2019-6-2 16:29:07 | 显示全部楼层
这是原图

这是我处理过后的效果图

就是无法去除布料信息,只保留花型轮廓
可以提供红包答谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-2 16:33:17 | 显示全部楼层
本帖最后由 erp80 于 2019-6-2 16:37 编辑
  1. <div class="blockcode"><blockquote>#include"opencv.hpp"
  2. #include"highgui.hpp"
  3. #include"xfeatures2d.hpp"
  4. #include <opencv2/xfeatures2d/nonfree.hpp>

  5. using namespace cv;
  6. using namespace std;
  7. using namespace xfeatures2d;

  8. int main()
  9. {
  10.         using namespace cv;
  11.         string mFile = "F:/tt.jpg";

  12.         // 调整自适应阈值方法的变量
  13.         int g_AdaptiveMethod = 0;

  14.         // 调整阈值类型的变量
  15.         int g_ThresholdType =1;
  16.         //
  17.         int g_Size = 1;


  18.         Mat srcImage = imread(mFile);

  19.         Mat dstImage;

  20.         //【3】使用高斯滤波消除噪声  
  21.         GaussianBlur(srcImage, dstImage, Size(7, 7), 0, 0, BORDER_DEFAULT);

  22.         //双边滤波
  23.         bilateralFilter(dstImage, srcImage, 8, 50, 200);

  24.         //腐蚀
  25.         Mat structElement2 = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1));
  26.         erode(srcImage, srcImage, structElement2);
  27.         //膨胀
  28.         Mat structElement1 = getStructuringElement(MORPH_RECT, Size(8, 8), Point(-1, -1));
  29.         dilate(srcImage, srcImage, structElement1);

  30.         medianBlur(srcImage, srcImage, 9);

  31.         resize(srcImage, srcImage, Size(srcImage.cols / 1.25, srcImage.rows / 1.25));

  32.         if (srcImage.channels() == 3)
  33.         {
  34.                 cvtColor(srcImage, srcImage, COLOR_BGR2GRAY);
  35.         }
  36.         // 对图像进行自适应阈值二值化       
  37.         adaptiveThreshold(srcImage, dstImage, 255, g_AdaptiveMethod, g_ThresholdType,11, g_Size);

  38.         //缩小
  39.         resize(dstImage, dstImage, Size(dstImage.cols / 2, dstImage.rows / 2));

  40.         //显示图
  41.         namedWindow("contours");
  42.         imshow("contours", dstImage);
  43.         waitKey();
  44.         return 0;
  45. }
复制代码

回复 支持 反对

使用道具 举报

发表于 2019-6-3 19:02:49 | 显示全部楼层
看看这个效果是否可以?(Q744180121)
flower.jpg
flower1.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-3 19:23:10 | 显示全部楼层
lidabenshi 发表于 2019-6-3 19:02
看看这个效果是否可以?(Q744180121)

非常感谢您能帮忙测试!
第一张图效果可以的
请问第二张是用相同的方法处理的吗?
怎么感觉效果没有第一张好呢?
回复 支持 反对

使用道具 举报

发表于 2019-6-4 08:10:37 | 显示全部楼层
是用的一个方法,首先你的第二张图片拍的效果不如第一张,第一张离镜头较近且平整。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-4 09:48:03 | 显示全部楼层
lidabenshi 发表于 2019-6-4 08:10
是用的一个方法,首先你的第二张图片拍的效果不如第一张,第一张离镜头较近且平整。 ...

是的,这些图片都是客户提供的,而且很多客户只有图片,没有实样,所以也无法要求他们重新拍图,所以针对这种光照和平整都不均的图,不知如何能尽可能的提取绣花轮廓
回复 支持 反对

使用道具 举报

发表于 2019-6-13 15:22:28 | 显示全部楼层
试试canny算法
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-7-23 07:15 , Processed in 0.053674 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表