导航:首页 > 编程语言 > 用五行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如何写app接口 浏览:798
宇宙的琴弦pdf 浏览:395
js项目提成计算器程序员 浏览:942
pdf光子 浏览:832
自拍软件文件夹名称大全 浏览:325
程序员留学移民 浏览:49
梁中间部位箍筋加密区 浏览:117
频谱分析pdf 浏览:750
乐2怎么升级安卓70 浏览:172
java中获取日期 浏览:506
单片机74hc245 浏览:272
美国历史上的总统pdf 浏览:751
程序员脱单实验室靠不靠谱 浏览:460
php中间四位手机号 浏览:871
永旺app怎么样了 浏览:518
压缩空气流量计算软件 浏览:651
智慧聊天app怎么激活 浏览:926
一加换机备份到哪个文件夹 浏览:737
支撑pdf 浏览:418
java空文件夹删除 浏览:589