本文目錄一覽:
- 1、用python摳圖(背景透明化)
- 2、python背景分離的問題。
- 3、python中的graphic里如何把已經畫好的圖案取消?例如:一個三角形
- 4、python 做界面時如何使圖片保持透明背景
- 5、python-opencv怎麼在不影響圖片中其他顏色的情況下,將黑色背景變成白色背景?
用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背景分離的問題。
你看一下ret和im的返回值,是不是真的獲取到了圖像,圖像是不是彩色的,3通道的
python中的graphic里如何把已經畫好的圖案取消?例如:一個三角形
move就可以了吧。那麼個對象move一下,對象最好用圖片。這樣換起來也方便。一個小的GIF圖。
graphic簡化了很多東西。過去做這樣的東西。麻煩很多。
1.將對象用圖片畫在DC里,保存DC
2.繪製前,先將背景對應區域的地方,做局部刷新
3.繪上你保存的DC
如果想去除,就是把背景對應區域,做一次局部刷新就可以了。如果全部刷新,屏幕會閃爍。
當然,現在都簡化了,你直接將你繪製的對象的變量。加上一個方法move()就可以去掉。
python 做界面時如何使圖片保持透明背景
# coding=utf-8
# matplotlib背景透明示例圖
# python 3.5
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
import scipy.stats as stats
# 設置中文字體
mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]
def autolabel(rects):
# attach some text labels
for rect in rects:
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-opencv怎麼在不影響圖片中其他顏色的情況下,將黑色背景變成白色背景?
設前景色為白色,選擇–色彩範圍,點選黑色,作反相處理,調整色階至滿意,局部細節用畫筆修整一下即可。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/156852.html