基于轮廓提取的 图像填充法

简介: 这篇文章介绍了一种基于轮廓提取的图像填充法,使用CVPR2021开源的pidinet项目进行轮廓提取,再结合OpenCV的floodFill算法实现图像的动态填充和复原功能。

基于轮廓提取的 图像填充法

一、前言

在设计裸眼3d视频生成算法的时候涉及到了这一点,遂记录一下
版本1,效果如下:
在这里插入图片描述
设计思路:一开始想直接用水漫法填充的时候,很容易发现下面的问题,就是抹少了,或抹多了,所以我们采用先转轮廓图,然后再用水漫法进行填充的方法。
在这里插入图片描述

  • 可以看到确实是好了一些

在这里插入图片描述

二、解决方案

1、轮廓提取的方案

采用CVPR2021开源的pidinet项目
在这里插入图片描述在这里插入图片描述
总体识别效果,我经过试毒还算可以,配好环境后,在配下参数与新建一个文件放图片,就可以了
算是印象比较好的项目,很人性

2、图像填充法

我采用了Opencv floodFill算法,也就是常说的水漫填充法
然后,在加一个鼠标监听即可

3、图像填充法设计程序如下

import cv2 as cv
import numpy as np

def fill_image(image,x,y):
    copyImage = image.copy() # 复制原图像
    h, w = image.shape[:2] # 读取图像的宽高
    mask = np.zeros([h+2, w+2], np.uint8) # 新建图像矩阵  +2是官方函数要求
    #(0,80) 起始点,(0,100,255) 蓝色 ,(100,100,50)棕色 ,(50,50,50) 浅黑
    cv.floodFill(copyImage, mask, (x,y), (255, 255, 255), (100, 100, 50), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
    cv.namedWindow("EdgeFill", cv.WINDOW_NORMAL)
    cv.imshow("EdgeFill", copyImage)
    return copyImage

def on_mouse(event,x,y,flags,param):
    global img,src
    if event==cv.EVENT_LBUTTONDOWN:
        img=fill_image(img,x,y)
    if event==cv.EVENT_RBUTTONDOWN:
        img=src.copy()
        cv.namedWindow("EdgeFill", cv.WINDOW_NORMAL)
        cv.imshow("EdgeFill", img)

def main():
    global img,src
    srcPath=input("请输入要动态填充的处理后的轮廓图片的绝对地址:")
    print("使用说明:点击左键则开始填充,点击右键则复原")
    src = cv.imread(srcPath)
    img=src.copy()
    cv.namedWindow("EdgeFill", 0)
    cv.imshow("EdgeFill", img)
    cv.setMouseCallback("EdgeFill",on_mouse)
    cv.waitKey(0)
    cv.destroyAllWindows()

if __name__=="__main__":
    main()
相关文章
|
9月前
|
计算机视觉 Python
OpenCV为图像扩边(填充)
OpenCV为图像扩边(填充)
99 0
|
计算机视觉
opencv 之图像的边界填充及一些数据计算
opencv 之图像的边界填充及一些数据计算
135 0
|
8月前
|
Web App开发 算法 Java
图像放缩之双线性内插值
图像放缩之双线性内插值
37 0
|
索引
实现替换图像中指定RGB色值区域
实现替换图像中指定RGB色值区域
386 0
|
计算机视觉
【OpenCV学习】图像填充
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #include "cv.h" #include "highgui.h" #include #include IplImage* color_img0; IplImage* mask...
658 0
【IMAQ】imaqSetImageSize() 设置图像大小
【IMAQ】imaqSetImageSize() 设置图像大小
|
8月前
|
计算机视觉
OpenCV图像像素值统计
OpenCV图像像素值统计
|
数据安全/隐私保护
调整图像大小,保持比例不足处填充颜色
自己遇到问题的时候经常在网上找一些资料,从来也没有回馈给大家什么,想着就有愧,不如把自己工作中的一些小工具上传上来给大家分享, 这个工具的主要作用就是处理图片了,主要目的就是为了保持比例地缩放图片,以前在网站上客户给的图片大小不一样,尺寸也不太一样,为了保持上传有比较好的效果 ,我就做了这个工具,上面的宽度与高度就是你想生成的图片的大小,怎么说呢? 比如你做的效果图处,产品图片那个位置
1249 0
|
编解码 算法 计算机视觉
利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
原文:利用OpenCV检测图像中的长方形画布或纸张并提取图像内容 基于知乎上的一个答案。问题如下: 也就是在一张照片里,已知有个长方形的物体,但是经过了透视投影,已经不再是规则的长方形,那么如何提取这个图形里的内容呢?这是个很常见的场景,比如在博物馆里看到一幅很喜欢的画,用手机找了下来,可是回家一看歪歪斜斜,脑补原画内容又觉得不对,那么就需要算法辅助来从原图里提取原来的内容了。
3893 0

热门文章

最新文章