您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python实现求纯色彩图像的边框

51自学网 2021-10-30 22:46:11
  python
这篇教程python实现求纯色彩图像的边框写得很实用,希望能帮到您。

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

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

放大局部细节看是这样的

原图是下面这样的

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

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

代码如下.

## demo.py# 识别单张图片#import argparseimport os import numpy as npimport timefrom modeling.deeplab import *from dataloaders import custom_transforms as trfrom PIL import Imagefrom torchvision import transformsfrom dataloaders.utils import  *from torchvision.utils import make_grid, save_image,to_imageimport matplotlibmatplotlib.use('TkAgg')import matplotlib.pyplot as pltdef 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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持51zixue.net。


python爬取企查查企业信息之selenium自动模拟登录企查查
Python模块介绍与使用详细讲解
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。