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 continue语句用法实例
Mar 11 Python
Python中类的继承代码实例
Oct 28 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
python3中bytes和string之间的互相转换
Feb 09 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
python生成lmdb格式的文件实例
Nov 08 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
Python with标签使用方法解析
Jan 17 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
Python 多线程之threading 模块的使用
Apr 14 Python
基于Python编写一个监控CPU的应用系统
Jun 25 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数据库连接类~~做成一个分页类!
2006/11/25 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
jquery中ajax学习笔记一
2011/10/16 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
Python文件处理
2016/02/29 Python
Python算法应用实战之栈详解
2017/02/04 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
用python写爬虫简单吗
2020/07/28 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
HTML5 解析规则分析
2009/08/14 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
经典的班主任推荐信
2013/10/28 职场文书
翻译专业应届生求职信
2013/11/23 职场文书
司机检讨书
2014/02/13 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
公司合并协议书范本
2014/09/30 职场文书
见习期个人总结
2015/03/05 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
MySQL 时间类型的选择
2021/06/05 MySQL
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers