python实现求纯色彩图像的边框
作者:走错路的程序员 发布时间:2022-04-01 22:04:51
标签: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
0
投稿
猜你喜欢
- python如何跳过异常继续执行下面有两种解决方法第一种是类似if…else…;另外一种是使用语
- 签名import base64import jsonimport timefrom datetime import datetimeimpo
- 本文实例为大家分享了基于神经卷积网络的人脸识别,供大家参考,具体内容如下1.人脸识别整体设计方案客_服交互流程图:2.服务端代码展示sk =
- 富文本编辑器,Rich Text Editor, 简称 RTE, 它提供类似于 Microsoft Word 的编辑功能,容易被不会编写 H
- 目录生成器nextsendthrowclose使用场景大集合的生成简化代码结构协程与并发总结生成器如果在一个方法内,包含了 yield 关键
- 在日常的工作中,保护数据免受未授权用户的侵犯是系统管理员特别关心的问题。如果你目前用的是MySQL,就可以使用一些方便的功能来保护系统,来大
- 如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。子类不重写 __init__,实例化子类时,会自动调
- 1. LEFT OUTER JOIN:左外关联 SELECT e.last_name, e.department_id, d.departm
- 注意事项:1.PyCharm尽量在官网下载:https://www.jetbrains.com/pycharm/download/也可以用本
- 本文主要介绍在 windows 10 系统中安装 Anaconda3 的详细过程。下载Anaconda 官网下载地址目前最新版本是 pyth
- TensorFlow修改变量值后,需要重新赋值,assign用起来有点小技巧,就是需要需要弄个操作子,运行一下。下面这么用是不行的impor
- 可控制的滚动新闻不同于自动的滚动条,它是通过按钮控制移动的,当你把鼠标放在按钮上时,新闻内容就会向上或
- 本文实例为大家分享了python matlibplot绘制3D图形的具体代码,供大家参考,具体内容如下1、散点图使用scatterfrom
- 一、前言前两篇博客讲解了爬虫解析网页数据的两种常用方法,re正则表达解析和beautifulsoup标签解析,所以今天的博客将围绕另外一种数
- 本文实例讲述了python3 property装饰器实现原理与用法。分享给大家供大家参考,具体如下:学习python的同学,慢慢的都会接触到
- Perceptron是用于二进制分类任务的线性机器学习算法。它可以被认为是人工神经网络的第一种和最简单的类型之一。绝对不是“深度”学习,而是
- 1 文件'''文件存储文件主名.扩展名'''Python中常有的数据文件类型有文本文件、二进
- 说明1.windows上安装安卓模拟器,安卓版本5.1以上2.模拟器里下载安装最新的微信6.6.13.最好使用python2.7,pytho
- 1、找到python的安装目录在python (版本号)\lib\idlelib目录下添加Clearwindow.py文件源代码如下:cla
- 目录准备读取数据写入数据修改数据进阶用法最后准备首先,我们需要安装依赖包# 安装依赖包pip3 install