python实现求纯色彩图像的边框

作者:走错路的程序员 时间:2022-04-01 22:04:51 

本文实例为大家分享了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()

来源:https://blog.csdn.net/phker/article/details/115483369

标签:python,图像,边框
0
投稿

猜你喜欢

  • django序列化serializers过程解析

    2022-09-26 22:22:36
  • asp如何实现人民币的大写转换?

    2010-05-24 18:27:00
  • Golang导入包的几种方式(点,别名与下划线)

    2023-09-17 23:09:42
  • 利用Python实现sqlite3增删改查的封装

    2021-06-19 14:57:05
  • python中and和or逻辑运算符的用法示例

    2022-10-13 03:31:18
  • 搜索结果页(SERP):个性化如何影响用户行为?

    2009-07-22 21:00:00
  • ASP读取MySQL数据库出现乱码的解决办法

    2010-03-08 14:25:00
  • Python PyQt5-图形界面的美化操作

    2023-11-08 23:04:34
  • scrapy-splash简单使用详解

    2023-06-02 15:22:37
  • Python+selenium 获取一组元素属性值的实例

    2021-06-06 02:28:27
  • python获取全国最新省市区数据并存入表实例代码

    2021-10-19 14:16:23
  • Django使用paginator插件实现翻页功能的实例

    2023-09-06 05:23:19
  • Python实现归一化算法详情

    2023-05-11 12:18:33
  • 搞定MySQL数据库中文模糊检索问题

    2007-09-17 12:36:00
  • Python内置函数详细解析

    2021-08-19 21:03:35
  • python实现查询IP地址所在地

    2021-09-08 17:18:43
  • pip如何用pipdeptree查看包依赖

    2022-07-28 01:56:26
  • Python中实现输入超时及如何通过变量获取变量名

    2021-02-17 03:17:48
  • python代数式括号有效性检验示例代码

    2022-04-29 04:49:49
  • SQL Server导入导出数据方法

    2007-08-17 09:50:00
  • asp之家 网络编程 m.aspxhome.com