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分析网页上所有超链接的方法
May 08 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
Python编程实现的图片识别功能示例
Aug 03 Python
python批量替换页眉页脚实例代码
Jan 22 Python
Numpy掩码式数组详解
Apr 17 Python
python3.6数独问题的解决
Jan 21 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
python增加图像对比度的方法
Jul 12 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
Python random模块的使用示例
Oct 10 Python
python numpy中setdiff1d的用法说明
Apr 22 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自定义apk安装包实例
2014/10/20 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
js时间控件只显示年月
2017/01/08 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
浅谈手写node可读流之流动模式
2018/06/01 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
django创建自定义模板处理器的实例详解
2017/08/14 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python的多维空数组赋值方法
2018/04/13 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
公司员工的自我评价范例
2013/11/01 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL