• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 基于opencv实现图像增强
    • 用Python给图像算法做个简单应用界面
    • python+opencv图像分割实现分割不规则ROI区域方法汇总
    • python-opencv实现视频指定帧数间隔图像的保存功能
    • Python深度学习之图像标签标注软件labelme详解
    • python使用matplotlib显示图像失真的解决方案
    • python调用stitcher类自动实现多个图像拼接融合功能
    • python数字图像处理之估计噪声参数
    • Python深度学习之使用Albumentations对图像做增强
    上一篇:python爬取企查查企业信息之selenium自动模拟登录企查查
    下一篇:Python模块介绍与使用详细讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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