小编给大家分享一下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中如何处理图片去除大块黑色区域”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。