溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python中如何處理圖片去除大塊黑色區(qū)域

發(fā)布時(shí)間:2022-02-23 10:40:25 來源:億速云 閱讀:261 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下python中如何處理圖片去除大塊黑色區(qū)域,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在使用MEGAN軟件繪制分類學(xué)樹狀圖時(shí),如果物種較少,生成的圖片會有大片的黑色區(qū)域,很不美觀。

在使用MEGAN軟件繪制分類學(xué)樹狀圖時(shí),如果物種較少,生成的圖片會有大片的黑色區(qū)域,很不美觀。那怎樣去除呢,請看下面腳本:

腳本運(yùn)行命令:

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>  分類學(xué)樹狀圖 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中如何處理圖片去除大塊黑色區(qū)域”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI