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小技巧分享
Nov 22 Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
python实现dijkstra最短路由算法
Jan 17 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
python中自带的三个装饰器的实现
Nov 08 Python
python isinstance函数用法详解
Feb 13 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
jupyter notebook 增加kernel教程
Apr 10 Python
记录模型训练时loss值的变化情况
Jun 16 Python
scrapy结合selenium解析动态页面的实现
Sep 28 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/10/09 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
PHP 快速排序算法详解
2014/11/10 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
python实现浪漫的烟花秀
2019/01/30 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
新年晚会主持词
2014/03/24 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
档案保密承诺书
2014/06/03 职场文书
交通志愿者活动总结
2014/06/27 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
公安机关起诉意见书
2015/05/20 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js