温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中如何处理图片去除大块黑色区域

发布时间:2022-02-23 10:40:25 来源:亿速云 阅读:269 作者:小新 栏目:开发技术

小编给大家分享一下python中如何处理图片去除大块黑色区域,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

在使用MEGAN软件绘制分类学树状图时,如果物种较少,生成的图片会有大片的黑色区域,很不美观。

在使用MEGAN软件绘制分类学树状图时,如果物种较少,生成的图片会有大片的黑色区域,很不美观。那怎样去除呢,请看下面脚本:

脚本运行命令:

python /share/work/wangq/script/work/png_black.py -i /share/nas1/fanyc/project/zx-20171030-47_21_ITS/2/ITS_3/4.Analysis_output/Taxa_summary/MEGAN_tree/Taxonomic_tree
Usage:
  Options: 
     -i <str>  分类学树状图 png图片所在目录,也是输出目录(目录最后不要带"/")
    程序检索目录下所有png文件并处理,输出图片会覆盖原来的图片

脚本代码:

import numpy
import sys, os, argparse, os.path,re,math
from PIL import Image
import matplotlib.pyplot as plt
##############################################
parser = argparse.ArgumentParser(description='This script is used to an error_bar')
parser.add_argument('-i','--in_dir',help='Please input  in_dir directory path',required=True)
args = parser.parse_args()
pathDir =  os.listdir(args.in_dir)
for allDir in pathDir:
    if (re.search(r'png$',allDir)):
        child = os.path.join('%s/%s' % (args.in_dir, allDir))
        img = Image.open(child) # Imgur's naming scheme
        pix = numpy.array(img)        # Convert to array
        black = numpy.array([0,0,0])
        white = numpy.array([255,255,255])
        black1 = numpy.array([0,0,0,255])
        white1 = numpy.array([255,255,255,255])
       #print pix
        
        print pix[1,1]
        pix2 = pix.copy()
        dim  = pix.shape
        #print pix[1,:]==black
        
        if (dim[2] == 3):
            for n in xrange(dim[0]):    
                if (pix[n,:]==black).all(): 
                    pix2[n,:,numpy.newaxis] = white
                    continue
                if ((pix[n,:]==black).sum()>=2.7*dim[1]):    
                    x = 0    
                    for m in xrange(dim[1]):
                        if (pix[n,m,:]==black).all():
                            x = x+1    
                    if (x >= dim[1]*0.9):
                        pix2[n,:,numpy.newaxis] = white
                            
#             for n in xrange(dim[1]):        
#                 if (pix[:,n]==black).all(): 
#                     pix2[:,n,numpy.newaxis] = white    
                    
                    
                    
        if (dim[2] == 4):
            for n in xrange(dim[0]):
                if (pix[n,:]==black1).all(): 
                    pix2[n,:,numpy.newaxis] = white1 
                    continue
                if ((pix[n,:]==black1).sum()>=3.7*dim[1]):    
                    x = 0    
                    for m in xrange(dim[1]):
                        if (pix[n,m,:]==black1).all():
                            x = x+1    
                    if (x >= dim[1]*0.9):
                        pix2[n,:,numpy.newaxis] = white1               
                
#             for n in xrange(dim[1]):    
#                 if (pix[:,n]==black1).all(): 
#                     pix2[:,n,numpy.newaxis] = white1
                
        fig = plt.figure()
        ax = fig.add_axes([0.0, 0.0, 1.0, 1.0], frameon=False, aspect=1)
    
        ax.imshow(pix2)
        ax.set_xticks([])
        ax.set_yticks([])
        plt.savefig(child,dpi=600)
        plt.close()
#.all()   .all()

以上是“python中如何处理图片去除大块黑色区域”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI