導航:首頁 > 編程語言 > 用五行python摳圖

用五行python摳圖

發布時間:2022-09-21 09:01:40

python 做界面時如何使圖片保持透明背景

#coding=utf-8
#matplotlib背景透明示例圖
#python3.5

importnumpyasnp
importmatplotlib.pyplotasplt
frompylabimportmpl
importscipy.statsasstats

#設置中文字體
mpl.rcParams['font.sans-serif']=['SimHei']


defautolabel(rects):
#attachsometextlabels
forrectinrects:
height=rect.get_height()
#設置標注文字及位置
ax.text(rect.get_x()+rect.get_width()/2,0.03+height,'%.4f'%height,ha='center',va='bottom')

#數據
testData=[[0.87,0.40,0.56],
[0.97,0.50,0.33],
[0.88,0.30,0.44],
[0.25,0.23,0.17],
[0.73,0.33,0.45]]

N=3
width=0.5
ind=np.arange(width,width*6*N,width*6)

fig,ax=plt.subplots()
rectsTest1=ax.bar(ind,(testData[0][0],testData[0][1],testData[0][2]),width,color=(0,0,1,1),edgecolor=(0,0,1,1))

rectsTest2=ax.bar(ind+width,(testData[1][0],testData[1][1],testData[1][2]),width,color=(1,0,0,1),edgecolor=(1,0,0,1))

rectsTest3=ax.bar(ind+2*width,(testData[2][0],testData[2][1],testData[2][2]),width,color=(0,1,0,1),edgecolor=(0,1,0,1))

rectsTest4=ax.bar(ind+3*width,(testData[3][0],testData[3][1],testData[3][2]),width,color=(1,0.6471,0,1),edgecolor=(1,0.6471,0,1))

rectsTest5=ax.bar(ind+4*width,(testData[4][0],testData[4][1],testData[4][2]),width,color=(0.5804,0,0.8275,1),edgecolor=(0.5804,0,0.8275,1))

ax.set_xlim(0,9.5)
ax.set_ylim(0,1.4)
ax.set_ylabel('數值')
ax.yaxis.grid(True)
ax.set_xticks(ind+width*2.5)
ax.set_xticklabels(('P','R','F'))

#設置圖例
legend=ax.legend((rectsTest1,rectsTest2,rectsTest3,rectsTest4,rectsTest5),('test1','test2','test3','test4','test5'))
frame=legend.get_frame()
frame.set_alpha(1)
frame.set_facecolor('none')#設置圖例legend背景透明

#給每個數據矩形標注數值
autolabel(rectsTest1)
autolabel(rectsTest2)
autolabel(rectsTest3)
autolabel(rectsTest4)
autolabel(rectsTest5)

plt.savefig('C:/Users/XX/Desktop/test.png',format='png',bbox_inches='tight',transparent=True,dpi=600)#bbox_inches='tight'圖片邊界空白緊致,背景透明

❷ 用python語言編寫一個m行n列得表格怎麼寫

defdrawTable(iRow,iColumn,iCellW=5,iCellH=3):
deffunc(x,y):
if(x%iCellW==0)and(y%iCellH==0):
print'+',
elifx%iCellW==0:
print'|',
elify%iCellH==0:
print'-',
else:
print'',
foryinrange(iColumn*iCellH+1):
forxinrange(iRow*iCellW):
func(x,y)
print'+'
drawTable(5,3)


上例為畫一個五行三列表格的代碼示例,在python 2.7版本上測試通過。

行列數目以及單元格寬度都可通過函數參數控制。

❸ python可以自動排海報嗎

可以。通過編碼後可實現。
批量摳圖:輸入文字和海報元素,就可以一鍵自動排版海報,一個小時就幾十張。

❹ 如何用一句python代碼列印五行「abc」,注意是十行

print('abc '*5)


❺ 這是Python語言,請問其中的第五行dc=……有什麼用為什麼用dc

那是定義的一個變數名,作用是深拷貝對象d,無論你是用dc,還是用其他字母代替都是無所謂的。
從你這個例子來看應該是用來研究python引用的區別.
. 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。
.deep 深拷貝 拷貝對象及其子對象

這里有個更好的例子可以參考:

import
a = [1, 2, 3, 4, ['a', 'b']] #原始對象
b = a #賦值,傳對象的引用
c = .(a) #對象拷貝,淺拷貝
d = .deep(a) #對象拷貝,深拷貝
a.append(5) #修改對象a
a[4].append('c') #修改對象a中的['a', 'b']數組對象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d

❻ 用python摳圖(背景透明化)

matplotlib讀取RGB圖片的時候,往往把圖片轉化為四通道圖片,其中第四個通道是α通道,可以決定圖像的透明度。
如果把圖片的前景的透明度設定為1,背景的透明度設定為0,那麼就算去掉了背景了。
原圖。
代碼。
出圖。
有部分白色背景由於不夠白,被保留了下來。
換圖。
觀察可知,背景是深淺不一的藍色。
深色參數是a[0,0],淺色區域比較多,也不容易確定位置。
用如下代碼摳圖,太狠!
再修改代碼。
if a[i,j,2]>1.5*a[i,j,0] and a[i,j,2]>1.2*a[i,j,1]:
不準摳去黑色部分。經過逐步調整顏色閾值,得到下面的效果。
上面代碼如下。

❼ 用python語言怎麼解這道題

輸入的數字你可以自己寫,我把一輪的邏輯寫給你,代碼如下:

運行結果

❽ 如何用 Python 實現一個摳圖功能

使用Python和OpenCV進行摳圖
其中使用了opencv中的grabcut方法
直接上代碼
[python] view plain
# encoding:utf-8
# 圖像提取
# create by
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('1.jpg')
mask = np.zeros(img.shape[:2], np.uint8)
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)
rect = (20, 20, 413, 591)
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 10, cv2.GC_INIT_WITH_RECT)mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')img = img * mask2[:, :, np.newaxis]
img += 255 * (1 - cv2.cvtColor(mask2, cv2.COLOR_GRAY2BGR))# plt.imshow(img)
# plt.show()
img = np.array(img)
mean = np.mean(img)
img = img - mean
img = img * 0.9 + mean * 0.9
img /= 255
plt.imshow(img)
plt.show()

❾ python抓取網頁時是如何處理驗證碼的

python抓取網頁時是如何處理驗證碼的?下面給大家介紹幾種方法:

1、輸入式驗證碼

這種驗證碼主要是通過用戶輸入圖片中的字母、數字、漢字等進行驗證。如下圖:

解決思路:這種是最簡單的一種,只要識別出裡面的內容,然後填入到輸入框中即可。這種識別技術叫OCR,這里我們推薦使用Python的第三方庫,tesserocr。對於沒有什麼背影影響的驗證碼如圖2,直接通過這個庫來識別就可以。但是對於有嘈雜的背景的驗證碼這種,直接識別識別率會很低,遇到這種我們就得需要先處理一下圖片,先對圖片進行灰度化,然後再進行二值化,再去識別,這樣識別率會大大提高。

相關推薦:《Python入門教程》

2、滑動式驗證碼

這種是將備選碎片直線滑動到正確的位置,如下圖:

解決思路:對於這種驗證碼就比較復雜一點,但也是有相應的辦法。我們直接想到的就是模擬人去拖動驗證碼的行為,點擊按鈕,然後看到了缺口的位置,最後把拼圖拖到缺口位置處完成驗證。

第一步:點擊按鈕。然後我們發現,在你沒有點擊按鈕的時候那個缺口和拼圖是沒有出現的,點擊後才出現,這為我們找到缺口的位置提供了靈感。

第二步:拖到缺口位置。

我們知道拼圖應該拖到缺口處,但是這個距離如果用數值來表示?

通過我們第一步觀察到的現象,我們可以找到缺口的位置。這里我們可以比較兩張圖的像素,設置一個基準值,如果某個位置的差值超過了基準值,那我們就找到了這兩張圖片不一樣的位置,當然我們是從那塊拼圖的右側開始並且從左到右,找到第一個不一樣的位置時就結束,這是的位置應該是缺口的left,所以我們使用selenium拖到這個位置即可。

這里還有個疑問就是如何能自動的保存這兩張圖?

這里我們可以先找到這個標簽,然後獲取它的location和size,然後 top,bottom,left,right = location['y'] ,location['y']+size['height']+ location['x'] + size['width'] ,然後截圖,最後摳圖填入這四個位置就行。

具體的使用可以查看selenium文檔,點擊按鈕前摳張圖,點擊後再摳張圖。最後拖動的時候要需要模擬人的行為,先加速然後減速。因為這種驗證碼有行為特徵檢測,人是不可能做到一直勻速的,否則它就判定為是機器在拖動,這樣就無法通過驗證了。

3、點擊式的圖文驗證和圖標選擇

圖文驗證:通過文字提醒用戶點擊圖中相同字的位置進行驗證。

圖標選擇: 給出一組圖片,按要求點擊其中一張或者多張。借用萬物識別的難度阻擋機器。

這兩種原理相似,只不過是一個是給出文字,點擊圖片中的文字,一個是給出圖片,點出內容相同的圖片。

這兩種沒有特別好的方法,只能藉助第三方識別介面來識別出相同的內容,推薦一個超級鷹,把驗證碼發過去,會返回相應的點擊坐標。

然後再使用selenium模擬點擊即可。具體怎麼獲取圖片和上面方法一樣。

4、宮格驗證碼

這種就很棘手,每一次出現的都不一樣,但是也會出現一樣的。而且拖動順序都不一樣。

但是我們發現不一樣的驗證碼個數是有限的,這里採用模版匹配的方法。我覺得就好像暴力枚舉,把所有出現的驗證碼保存下來,然後挑出不一樣的驗證碼,按照拖動順序命名,我們從左到右上下到下,設為1,2,3,4。上圖的滑動順序為4,3,2,1,所以我們命名4_3_2_1.png,這里得手動搞。當驗證碼出現的時候,用我們保存的圖片一一枚舉,與出現這種比較像素,方法見上面。如果匹配上了,拖動順序就為4,3,2,1。然後使用selenium模擬即可。

閱讀全文

與用五行python摳圖相關的資料

熱點內容
php備案號 瀏覽:986
php視頻水印 瀏覽:163
怎麼追程序員的女生 瀏覽:485
空調外壓縮機電容 瀏覽:77
怎麼將安卓變成win 瀏覽:457
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328
程序員留學移民 瀏覽:52
梁中間部位箍筋加密區 瀏覽:119
頻譜分析pdf 瀏覽:752
樂2怎麼升級安卓70 瀏覽:174
java中獲取日期 瀏覽:508
單片機74hc245 瀏覽:274
美國歷史上的總統pdf 瀏覽:753
程序員脫單實驗室靠不靠譜 瀏覽:460