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实现保存网页到本地示例
Mar 16 Python
python入门之语句(if语句、while语句、for语句)
Jan 19 Python
Python的批量远程管理和部署工具Fabric用法实例
Jan 23 Python
Python求导数的方法
May 09 Python
python获取mp3文件信息的方法
Jun 15 Python
Python图像处理之简单画板实现方法示例
Aug 30 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
python批量生成身份证号到Excel的两种方法实例
Jan 14 Python
基于python实现银行管理系统
Apr 20 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 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获取mysql数据库中的所有表名的代码
2011/04/23 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
JS中Location使用详解
2015/05/12 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python实现一个简单的验证码程序
2017/11/03 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
python挖矿算力测试程序详解
2019/07/03 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python字符串的拼接方法总结
2019/11/18 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
六十岁生日答谢词
2014/01/10 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
企业文明单位申报材料
2014/05/16 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js