我们从Python开源项目中,提取了以下4个代码示例,用于说明如何使用cv2.inpaint()。
def erase_specular(image,lower_threshold=0.0, upper_threshold=150.0): """erase_specular: removes specular reflections within given threshold using a binary mask (hi_mask) """ thresh = cv2.inRange(image, np.asarray(float(lower_threshold)), np.asarray(256.0)) kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7,7)) hi_mask = cv2.dilate(thresh, kernel, iterations=2) specular = cv2.inpaint(image, hi_mask, 2, flags=cv2.INPAINT_TELEA) # return cv2.max(hi_mask,image) return specular
def inpaint(self, win_size=3, rescale_factor=1.0): """ Fills in the zero pixels in the image. Parameters ---------- win_size : int size of window to use for inpainting rescale_factor : float amount to rescale the image for inpainting, smaller numbers increase speed Returns ------- :obj:`ColorImage` color image with zero pixels filled in """ # resize the image resized_data = self.resize(rescale_factor, interp='nearest').data # inpaint smaller image mask = 1 * (np.sum(resized_data, axis=2) == 0) inpainted_data = cv2.inpaint(resized_data, mask.astype(np.uint8), win_size, cv2.INPAINT_TELEA) inpainted_im = ColorImage(inpainted_data, frame=self.frame) # fill in zero pixels with inpainted and resized image filled_data = inpainted_im.resize( 1.0 / rescale_factor, interp='bilinear').data new_data = self.data new_data[self.data == 0] = filled_data[self.data == 0] return ColorImage(new_data, frame=self.frame)
def inpaint(self, rescale_factor=1.0): """ Fills in the zero pixels in the image. Parameters ---------- rescale_factor : float amount to rescale the image for inpainting, smaller numbers increase speed Returns ------- :obj:`DepthImage` depth image with zero pixels filled in """ # form inpaint kernel inpaint_kernel = np.array([[1, 1, 1], [1, 0, 1], [1, 1, 1]]) # resize the image resized_data = self.resize(rescale_factor, interp='nearest').data # inpaint the smaller image cur_data = resized_data.copy() zeros = (cur_data == 0) while np.any(zeros): neighbors = ssg.convolve2d((cur_data != 0), inpaint_kernel, mode='same', boundary='symm') avg_depth = ssg.convolve2d(cur_data, inpaint_kernel, mode='same', boundary='symm') avg_depth[neighbors > 0] = avg_depth[neighbors > 0] / \ neighbors[neighbors > 0] avg_depth[neighbors == 0] = 0 avg_depth[resized_data > 0] = resized_data[resized_data > 0] cur_data = avg_depth zeros = (cur_data == 0) # fill in zero pixels with inpainted and resized image inpainted_im = DepthImage(cur_data, frame=self.frame) filled_data = inpainted_im.resize( 1.0 / rescale_factor, interp='bilinear').data new_data = np.copy(self.data) new_data[self.data == 0] = filled_data[self.data == 0] return DepthImage(new_data, frame=self.frame)
def remove_crosshair(images, crosshair_mask): result = [] mask = cv2.imread(crosshair_mask) mask = cv2.split(mask)[0] for i, img in enumerate(images): result.append(cv2.inpaint(img, mask, 6, cv2.INPAINT_NS)) return result