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

放大局部细节看是这样的

原图是下面这样的


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

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

代码如下.

#
# demo.py
# 识别单张图片
#
import argparse
import os
import numpy as np
import timefrom 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_imageimport matplotlib
matplotlib.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.shapesrc = 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实现求纯色彩图像的边框.相关推荐

  1. python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)

    实验环境:python2.7 题目1:python之"求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数" 程序: import math def factorial(n): ...

  2. python函数def里面嵌套def,python菜鸟求问关于嵌套函数中作用域范围应该怎么理解?,python嵌套,直接上代码def l(l...

    python菜鸟求问关于嵌套函数中作用域范围应该怎么理解?,python嵌套,直接上代码def l(l 直接上代码def l(list): def d(): return list return d ...

  3. python concat函数 多张表_教你用python递归函数求n的阶乘,优缺点及递归次数设置方式

    本文内容介绍了python递归函数求n的阶乘,优缺点及递归次数设置方式,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧! 递归函数两大特点: 1.能够调用函数自身 2.至少有一个出口( ...

  4. 计算机语言平均数怎么算,使用python怎么求三个数的平均值

    使用python怎么求三个数的平均值 发布时间:2021-04-27 17:31:39 来源:亿速云 阅读:64 作者:Leah 本篇文章给大家分享的是有关使用python怎么求三个数的平均值,小编觉 ...

  5. python快速求EXCEL数据权重

    python快速求EXCEL数据权重 1.数据 2.9,1.13,26.98,0.97 3.3,1.16,26.16,0.99 2.5,1.29,27.2,0.99 3.1,</

  6. [转载] python下求语数总分和平均值_R和python语言如何求平均值,中位数和众数

    参考链接: 在Python中计算均值,中位数和众数 均值是通过取数值的总和并除以数据序列中的值的数量来计算. R语言平均值公式: mean(x, trim = 0, na.rm = FALSE, .. ...

  7. python编程求n的阶乘_使用Python编程的阶乘

    python编程求n的阶乘 Before we start implementing factorial using Python, let us first discuss what factori ...

  8. python:实现求模逆算法(附完整源码)

    python:实现求模逆算法 def gcd(a: int, b: int) -> int:while a != 0:a, b = b % a, a

  9. 菜鸟学Python之求水仙花数

    水仙花数的意思是说一个三位数的百位.十位.个位各自求立方后再求和等于这个三位数:153=1^3+5^3+3^3.现在问题来了:请写出一段Python程序求出100-999之间的所有水仙花数. 整合了一 ...

最新文章

  1. windows平台实现dll远程注入的简单例子
  2. mac中python怎么打开中文txt文件-mac在matplotlib中显示中文的操作方法
  3. 抽象工厂模式(C#)
  4. 继 承(面向对象特征之一)
  5. 领导再也不会因为模型刷新不出来批评我啦---论IE扩内存(转载)
  6. OPPO Find X,一款(可能)被全面屏“耽搁”了的AI手机
  7. android最新图表框架,Android中绘制图表的开源框架AChartEngine初识
  8. atomic原子类实现机制_原子操作CAS及其实现类
  9. qtp(QuickTest Professional)的下载安装
  10. 关于opencv中 tf_text_graph_ssd.py生成pbtxt报错的解决方案
  11. Python培训得多少钱
  12. 类蛇毒肽、蛇毒肽、 三肽-3、823202-99-9
  13. UE4 4.26 Pixel Streaming 应用场景
  14. YUV420 Planar 和YUV420 Semi-Planar详解
  15. 红利逐渐消失殆尽的互联网下半场,前路何方?
  16. WordPress部分函数详解
  17. php解决01背包问题,php实现01背包问题之动态规划
  18. C# wpf 通过HwndHost渲染视频
  19. 基于STC12C5A的MINI3216多功能点阵时钟
  20. 【系统】查看文件的md5值

热门文章

  1. 【原创开源】网络版二代双通道示波器开源发布,支持电脑,手机和Pad等各种OS平台访问
  2. 微博短链接的生成算法(Java版本)
  3. 计算机软件中级职称专业哪个容易考,计算机软考中级职称哪个最容易考
  4. Java基础应用(上)
  5. Python每日一个知识点3----一行代码实现动态倒计时
  6. 基于32单片机两轮平衡小车控制系统设计
  7. paypal android sdk,PayPal Android SDK 2.0 支付
  8. 滑环的基本结构及工作原理分析
  9. 小米架构师 php,小米首席架构师汪文俊:MIUI无惧安卓闭源
  10. 让你彻底搞懂IP地址