python实现求纯色彩图像的边框


Posted in Python onApril 08, 2021

本文实例为大家分享了python实现求纯色彩图像的边框,供大家参考,具体内容如下

先上效果图,这里显示有点色差, 实际数值是纯色的, 而不是混色的.

python实现求纯色彩图像的边框

放大局部细节看是这样的

python实现求纯色彩图像的边框

原图是下面这样的

python实现求纯色彩图像的边框

这个算法最大的特点是保留原始像素的数值, 而不是把边框统一变成白色.
实现的算法也超级简单. 就是有点慢. 考虑到我这个应用场景对性能要求不高, 比人快就行. 人工是它的几百倍. 所以也就无所谓啦.
测试结果一张1080*1920的图用时3秒, 如果换成c语言估计0.5秒左右.

算法原理, 每次4个田子形像素逐行扫描. 发现4个像素不一致的就输出到结果图上. 否则就是输出0.

代码如下.

#
# demo.py
# 识别单张图片
#
import argparse
import os 
import numpy as np
import time

from modeling.deeplab import *
from dataloaders import custom_transforms as tr
from PIL import Image
from torchvision import transforms
from dataloaders.utils import  *
from torchvision.utils import make_grid, save_image,to_image

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

def main():
    im = Image.open("test_border.png")
    npimg = np.array(im) # 这个图片是1维的索引图. 
    # chwimg = npimg.transpose(2,0,1) # HWC 变成 CHW 格式的矩阵
    print(npimg.shape)
    h,w,c = npimg.shape

    src = np.sum(npimg,axis=2) # 这里测试用, 先把3通道的合成了一个通道的, 实际使用的时候也是1通道的.
    print(src.shape)
    borderimg = np.zeros(src.shape) #默认都输出了0 后面就不用输出0了.
    # 修补bug, 解决边框线会丢失的问题.
    borderimg[0,:]=src[0,:]
    borderimg[:,0]=src[:,0]
    borderimg[-1,:]=src[-1,:]
    borderimg[:,-1]=src[:,-1]
   
    t1= time.time()
    for x in range(0,h-1,1): 
        for y in range(0,w-1,1):
            # point = src[x,y]
            # if(point>0):
                # print(point)
            if not (src[x,y] == src[x+1,y] == src[x,y+1] == src[x+1,y+1]): # 发现4个像素不一致的就输出到结果图上.
                borderimg[x,y] = src[x,y]
                borderimg[x+1,y] = src[x+1,y]
                borderimg[x,y+1] = src[x,y+1]
                borderimg[x+1,y+1] = src[x+1,y+1]
    t2= time.time()
    print("耗时",t2-t1)

    plt.figure()
    plt.title('display') 
    plt.imshow(src) 
    plt.show( )

    plt.imshow(borderimg) 
    plt.show( )

    print("start test get image border ...")

if __name__ == "__main__":
    main()
else:
    main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现爬虫下载漫画示例
Feb 16 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
深入了解Django View(视图系统)
Jul 23 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
使用Django搭建一个基金模拟交易系统教程
Nov 18 Python
Python实现中值滤波去噪方式
Dec 18 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 #Python
Django 如何实现文件上传下载
Apr 08 #Python
python3 删除所有自定义变量的操作
Apr 08 #Python
pytorch显存一直变大的解决方案
Apr 08 #Python
Python文件的操作示例的详细讲解
Django展示可视化图表的多种方式
You might like
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
做网页的一些技巧
2007/02/01 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python爬虫基本知识
2018/03/05 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python创建学生成绩管理系统
2019/11/22 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
Python基于locals返回作用域字典
2020/10/17 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
经典而简洁的婚礼主持词
2014/03/13 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
千与千寻观后感
2015/06/04 职场文书
小学课改工作总结
2015/08/13 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Python 数据可视化之Matplotlib详解
2021/11/02 Python
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS