python等高线图轮廓线提取_CG_图片轮廓mask提取-matlab & python

本文对比了Windows下convert_data函数与Python中的convert函数,展示了如何使用这两个工具进行图像预处理,特别是服装分割mask的生成,用于训练深度学习模型。通过阈值处理和膨胀填充,实现图像二值化和目标区域提取。
摘要由CSDN通过智能技术生成

% Windows

function convert_data()

source_root_dir = 'E:/data/';

%cname = '000003_1.jpg';

target_root_dir = 'E:/data/';

fine_height = 256;

fine_width = 192;

mode = 'train';

[im_names, cloth_names] = textread(['E:\data\train_pairs_ansi.txt'],'%s %s');

N = length(im_names);

for i = 1:N;

imname = im_names{i} ;

cname = cloth_names{i};

fprintf('%d/%d: %s %s\n', i, N, imname, cname);

convert([source_root_dir, mode], [target_root_dir, mode], cname)

end

end

function convert(source_root_dir, target_root_dir, cname)

im_c = imread([source_root_dir '/' 'cloth-parse-seg/' cname]);

% save cloth mask

mask = double((im_c(:,:,1) <= 250) & (im_c(:,:,2) <= 250) & (im_c(:,:,3) <= 250));

mask = imfill(mask);

mask = medfilt2(mask);

imwrite(mask, [target_root_dir '/cloth-parse-seg-mask/' cname]);

end

python

importcv2importosimportnumpy as npdef convert(f, isShow=False):

im_in=cv2.imread(f, cv2.IMREAD_GRAYSCALE)#th, im_th = cv2.threshold(im_in, 0, 255, cv2.THRESH_BINARY)

th, im_th = cv2.threshold(im_in, 254, 255, cv2.THRESH_BINARY_INV) # 颜色大于240的位置,标注255#th, im_th = cv2.threshold(im_in, 200, 255, cv2.THRESH_OTSU)

#th, im_th = cv2.threshold(im_in, 200, 255, cv2.THRESH_TRIANGLE)

#th, im_th = cv2.threshold(im_in, 0, 254, cv2.THRESH_TRUNC)

#th, im_th = cv2.threshold(im_in, 200, 255, cv2.THRESH_MASK)

#th, im_th = cv2.threshold(im_in, 200, 255, cv2.THRESH_TOZERO)

#th, im_th = cv2.threshold(im_in, 200, 255, cv2.THRESH_TOZERO_INV)

im_floodfill=im_th.copy()

h, w= im_th.shape[:2]

mask= np.zeros((h + 2, w + 2), np.uint8)

cv2.floodFill(im_floodfill, mask, (0, 0),255)

im_floodfill_inv=cv2.bitwise_not(im_floodfill)

im_out= im_th |im_floodfill_inv#中值滤波

im_out2 = cv2.medianBlur(im_out, 3)print('save ---', os.path.basename(f))

cv2.imwrite(os.path.basename(f), im_out2)#print(im_out2.shape)

#print(im_th.shape)

dest = str(os.path.basename(f)).replace('.png', '_im_th.png')print(dest)

cv2.imwrite(dest, im_th)ifisShow:

cv2.imshow('Thresholded image', im_th)

cv2.imshow('Floodfilled iamge', im_floodfill)

cv2.imshow('Inverted FloodFilled Image', im_floodfill_inv)

cv2.imshow('Forground', im_out)

cv2.imshow('MedianBlur', im_out2)

cv2.imshow('Image', im_in)convert('/home/simon/Pictures/gold.jpg', False)

#for i, f in enumerate(os.listdir(in_dir)):#if not f.endswith('.jpg'):#continue#print(i, f)#convert(os.path.join(in_dir, f))#if i == 100 :#break

k=cv2.waitKey(0)if k == 27: #键盘上Esc键的键值

cv2.destroyAllWindows()

 

 

--

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值