1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 对图像进行ps制作语义分割数据集

对图像进行ps制作语义分割数据集

时间:2024-07-24 06:12:33

相关推荐

对图像进行ps制作语义分割数据集

在语义分割中,经常会出现由于数据原因从而导致分割效果比较差,除了一些常用的翻转等图像增强方法,今天本人测试了将部分分割目标数据ps到原始图像上并同时完成标签制作的代码,使模型效果得到了一定提升。

下面是具体的代码,大家有需要可以进行参考:

import numpy as npimport cv2import osimport randomclass image_concat:def __init__(self, image_path, cover_path, image_savepath, mask_savepath):#原始图像路径self.image_path = image_path#图像保存路径self.image_savepath = image_savepath#标签保存路径self.mask_savepath = mask_savepath#PS数据集路径 self.cover_path = cover_pathcount = 0for cover_imgname in os.listdir(self.cover_path):for img_name in os.listdir(self.image_path):img = os.path.join(self.cover_path, cover_imgname)cover_image = cv2.imread(img)image = cv2.imread(os.path.join(self.image_path, img_name))# 每张图像进行3次随机位置叠加,扩充数据量for _ in range(3):image_res, mask_res = self.concat(image, cover_image)imgres_savename = os.path.join(str(count)+'.jpg')maskres_save = os.path.join(str(count)+'.png')cv2.imwrite(os.path.join(self.image_savepath, imgres_savename), image_res)cv2.imwrite(os.path.join(self.mask_savepath, maskres_save), mask_res)count += 1print('finishi:',count)def concat(self,image_flie,cover_image):img_array = np.array(image_flie)cover_array = np.array(cover_image)x, y, z = img_array.shapemask = np.zeros((x,y), np.uint8)img_res, cover_res = self.get_coverimage(img_array, cover_array, mask)return img_res, cover_resdef get_coverimage(self, image, cover, mask):mask_origin = maskimg2 = coverimg1 = image# I want to put logo on top-left corner, So I create a ROI# 首先获取原始图像roirows, cols, channels = img2.shapewhole_rows, whole_cols, whole_channels = img1.shaperow_start = random.randint(0, whole_rows - rows)col_start = random.randint(0, whole_cols - cols)roi = img1[row_start:row_start+rows, col_start:col_start+cols]# 原始图像转化为灰度值# Now create a mask of logo and create its inverse mask alsoimg2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)'''将一个灰色的图片,变成要么是白色要么就是黑色。(大于规定thresh值就是设置的最大值(常为255,也就是白色))'''# 将灰度值二值化,得到ROI区域掩模ret, mask = cv2.threshold(img2gray, 200, 255, cv2.THRESH_BINARY)# ROI掩模区域反向掩模mask_inv = cv2.bitwise_not(mask)# 掩模显示背景# Now black-out the area of logo in ROIimg1_bg = cv2.bitwise_and(roi, roi, mask=mask)# 掩模显示前景# Take only region of logo from logo image.img2_fg = cv2.bitwise_and(img2, img2, mask=mask_inv)# 前背景图像叠加# Put logo in ROI and modify the main imagedst = cv2.add(img1_bg, img2_fg)img1[row_start:row_start+rows, col_start:col_start+cols] = dstmask_origin[row_start:row_start+rows, col_start:col_start+cols] = mask_invreturn img1, mask_origin

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。