⑴ python彡凌寒的微博头像是什么动漫
非常感谢wolfg!但是icon内部结构是怎么组织的?有什么地方可以看说明文档吗?我读的是其他格式的图像(不是普遍使用的),icon的格式如果和我内存中的不一样,显示会有错呀!
⑵ python上传图片头像。一个post 提交不知道怎么写这样的
首先你需要在你的表单上添加enctype="multipart/form-data"。
<formaction="/message/"enctype="multipart/form-data"method="post">
<inputtype="file"name="picfile">
<buttonvalue="提交"type="submit">提交</button>
</form>
其次看你后端的web框架,如果是django,你可以参考。
fromPILimportImage
try:
reqfile=
request.FILES['picfile']#picfile要和html里面一致
img=Image.open(reqfile)
img.thumbnail((500,500),Image.ANTIALIAS)#对图片进行等比缩放
img.save("/Users/bcc/Desktop/python/bbs/Image/a.png","png")#保存图片
exceptException,e:
returnHttpResponse("Error%s"%e)#异常,查看报错信息
如果解决了您的问题请采纳!
如果未解决请继续追问
⑶ python主要可以做什么
python主要可以做Web 和 Internet开发、科学计算和统计、桌面界面开发、软件开发、后端开发等领域的工作。
Python是一种解释型脚本语言。Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。
(3)python实现卡通头像扩展阅读
python的主要优点:
简单易学:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。因有极其简单的说明文档,Python极其容易上手。
运行速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。
免费、开源资源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
⑷ Python可以用来干什么
1、做日常任务,比如下载视频、MP3、自动化操作excel、自动发邮件。
2、做网站开发、web应用开发,很多着名的网站像知乎、YouTube就是Python写的。
许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。
3、做网络游戏的后台,很多在线游戏的后台都是Python开发的。
4、系统网络运维
Linux运维是必须而且一定要掌握Python语言,它可以满足Linux运维工程师的工作需求提升效率,总而提升自己的能力,运维工程师需要自己独立开发一个完整的自动化系统时,这个时候才是真正价值的体现,才能证明自身的能力,让老板重视。
5、3D游戏开发
Python也可以用来做游戏开发,因为它有很好的3D渲染库和游戏开发框架,目前来说就有很多使用Python开发的游戏,如迪斯尼卡通城、黑暗之刃。
6、科学与数字计算
我们都知道现在来临了大数据的时代,数据可以说明一切问题的原因,现在很多做数据分析的不是原来那么简单,Python语言成为了做数据分析师的第一首选,它同时可以给工作带来很大的效率。
7、人工智能
人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。Python语言对于人工智能来说是最好的语言。目前好多人都开始学习人工智能+Python学科。
8、网络爬虫
爬虫是属于运营的比较多的一个场景吧,比如谷歌的爬虫早期就是用跑Python写的. 其中有一个库叫 Requests ,这个库是一个模拟HTTP请求的一个库,非常的出名! 学过Python的人没有不知道这个库吧,爬取后的数据分析与计算是Python最为擅长的领域,非常容易整合。不过目前Python比较流行的网络爬虫框架是功能非常强大的scrapy。
9、数据分析
一般我们用爬虫爬到了大量的数据之后,我们需要处理数据用来分析,不然爬虫白爬了,我们最终的目的就是分析数据,在这方面 关于数据分析的库也是非常的丰富的,各种图形分析图等 都可以做出来。也是非常的方便,其中诸如Seaborn这样的可视化库,能够仅仅使用一两行就对数据进行绘图,而利用Pandas和numpy、scipy则可以简单地对大量数据进行筛选、回归等计算。
而后续复杂计算中,对接机器学习相关算法,或者提供Web访问接口,或是实现远程调用接口,都非常简单。
⑸ python scratch区别
区别如下:
Scratch是图形化编程,使用卡通积木块堆叠完成编程,可以不熟悉键盘就能编程,好处是Scratch把所有底层细节都屏蔽掉了,让编写者专注于功能代码的开发,怎么写都不报错。
Python是一门真正的编程语言,应用领域广泛,使用英文代码进行编程,使用者需要有良好的英文水平,对键盘比较熟悉。
Scratch是麻省理工学院的“终身幼儿园团队”开发的一种图形化编程工具,主要面对全球青少年开放,是图形化编程工具当中最广为人知的一种形式。
截止到2021年已有1.4版、2.0版本(增加克隆积木,视频侦测,Lego拓展积木)、3.0版本(增加文字朗读、翻译和Makey makey等选择性下载扩展积木,并增加micro:bit和Lego mindstorms EV3拓展积木)、3.12.0版本、3.18.1版本、3.19.2版本、3.4版本、3.6版本、3.9版本。所有人都可以在任意版本中创作自己的程序。
⑹ python 获取global contact list
贴出完整源代码。
代码中:使用二维码登录网页版微信,并下载好友头像,并将好友资料数据存入csv文件,待进一步处理全局联络人列表也被导入在导入之后,某些列表被提供给用户的地址簿,如果用户已选择了该选项的话全局联络人列表(GlobalContactList)是经由GUID标识的给定源用户的联络人的有序列表。
Python是一种跨平台的计算机程序设计语言是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发Python的应用领域还是非常广泛的,因为Python是一种解释型脚本语言,所以可以应用的领域就非常的丰富,比如:Web和Internet开发,科学计算和统计,人工智能,桌面界面开发,软件开发,后端开发。
⑺ 如何使用Python,基于OpenCV与Face++实现人脸解锁的功能
近几天微软的发布会上讲到了不少认脸解锁的内容,经过探索,其实利用手头的资源我们完全自己也可以完成这样一个过程。
本文讲解了如何使用Python,基于OpenCV与Face++实现人脸解锁的功能。
本文基于Python 2.7.11,Windows 8.1 系统。
主要内容
Windows 8.1上配置OpenCV
OpenCV的人脸检测应用
使用Face++完成人脸辨识(如果你想自己实现这部分的功能,可以借鉴例如这个项目)
Windows 8.1上配置OpenCV
入门的时候配置环境总是一个非常麻烦的事情,在Windows上配置OpenCV更是如此。
既然写了这个推广的科普教程,总不能让读者卡在环境配置上吧。
下面用到的文件都可以在这里(提取码:b6ec)下载,但是注意,目前OpenCV仅支持Python2.7。
将cv2加入site-packages
将下载下来的cv2.pyd文件放入Python安装的文件夹下的Libsite-packages目录。
就我的电脑而言,这个目录就是C:/Python27/Lib/site-packages/。
记得不要直接使用pip安装,将文件拖过去即可。
安装numpy组件
在命令行下进入到下载下来的文件所在的目录(按住Shift右键有在该目录打开命令行的选项)
键入命令:
1
pip install numpy-1.11.0rc2-cp27-cp27m-win32.whl
如果你的系统或者Python不适配,可以在这里下载别的轮子。
测试OpenCV安装
在命令行键入命令:
1
python -c "import cv2"
如果没有出现错误提示,那么cv2就已经安装好了。
OpenCV的人脸检测应用
人脸检测应用,简而言之就是一个在照片里找到人脸,然后用方框框起来的过程(我们的相机经常做这件事情)
那么具体而言就是这样一个过程:
获取摄像头的图片
在图片中检测到人脸的区域
在人脸的区域周围绘制方框
获取摄像头的图片
这里简单的讲解一下OpenCV的基本操作。
以下操作是打开摄像头的基本操作:
1
2
3
4
5
6
7
#coding=utf8
import cv2
# 一般笔记本的默认摄像头都是0
capInput = cv2.VideoCapture(0)
# 我们可以用这条命令检测摄像头是否可以读取数据
if not capInput.isOpened(): print('Capture failed because of camera')
那么怎么从摄像头读取数据呢?
1
2
3
4
5
6
7
8
# 接上段程序
# 现在摄像头已经打开了,我们可以使用这条命令读取图像
# img就是我们读取到的图像,就和我们使用open('pic.jpg', 'rb').read()读取到的数据是一样的
ret, img = capInput.read()
# 你可以使用open的方式存储,也可以使用cv2提供的方式存储
cv2.imwrite('pic.jpg', img)
# 同样,你可以使用open的方式读取,也可以使用cv2提供的方式读取
img = cv2.imread('pic.jpg')
为了方便显示图片,cv2也提供了显示图片的方法:
1
2
3
4
5
6
# 接上段程序
# 定义一个窗口,当然也可以不定义
imgWindowName = 'ImageCaptured'
imgWindow = cv2.namedWindow(imgWindowName, cv2.WINDOW_NORMAL)
# 在窗口中显示图片
cv2.imshow(imgWindowName, img)
当然在完成所有操作以后需要把摄像头和窗口都做一个释放:
1
2
3
4
5
# 接上段程序
# 释放摄像头
capInput.release()
# 释放所有窗口
cv2.destroyAllWindows()
在图片中检测到人脸的区域
OpenCV给我们提供了已经训练好的人脸的xml模板,我们只需要载入然后比对即可。
1
2
3
4
5
6
7
8
# 接上段程序
# 载入xml模板
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 将图形存储的方式进行转换
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用模板匹配图形
faces = faceCascade.detectMultiScale(gray, 1.3, 5)
print(faces)
在人脸的区域周围绘制方框
在上一个步骤中,faces中的四个量分别为左上角的横坐标、纵坐标、宽度、长度。
所以我们根据这四个量很容易的就可以绘制出方框。
1
2
3
# 接上段程序
# 函数的参数分别为:图像,左上角坐标,右下角坐标,颜色,宽度
img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
成果
根据上面讲述的内容,我们现在已经可以完成一个简单的人脸辨认了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#coding=utf8
import cv2
print('Press Esc to exit')
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
imgWindow = cv2.namedWindow('FaceDetect', cv2.WINDOW_NORMAL)
def detect_face():
capInput = cv2.VideoCapture(0)
# 避免处理时间过长造成画面卡顿
nextCaptureTime = time.time()
faces = []
if not capInput.isOpened(): print('Capture failed because of camera')
while 1:
ret, img = capInput.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
if nextCaptureTime < time.time():
nextCaptureTime = time.time() + 0.1
faces = faceCascade.detectMultiScale(gray, 1.3, 5)
if faces:
for x, y, w, h in faces:
img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2.imshow('FaceDetect', img)
# 这是简单的读取键盘输入,27即Esc的acsii码
if cv2.waitKey(1) & 0xFF == 27: break
capInput.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
detect_face()
使用Face++完成人脸辨识
第一次认识Face++还是因为支付宝的人脸支付,响应速度还是非常让人满意的。
现在只需要免费注册一个账号然后新建一个应用就可以使用了,非常方便。
他的官方网址是这个,注册好之后在这里的我的应用中创建应用即可。
创建好应用之后你会获得API Key与API Secret。
Face++的API调用逻辑简单来说是这样的:
上传图片获取读取到的人的face_id
创建Person,获取person_id(Person中的图片可以增加、删除)
比较两个face_id,判断是否是一个人
比较face_id与person_id,判断是否是一个人
上传图片获取face_id
在将图片通过post方法上传到特定的地址后将返回一个json的值。
如果api_key, api_secret没有问题,且在上传的图片中有识别到人脸,那么会存储在json的face键值下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#coding=utf8
import requests
# 这里填写你的应用的API Key与API Secret
API_KEY = ''
API_SECRET = ''
# 目前的API网址是这个,你可以在API文档里找到这些
BASE_URL = 'httlus.com/v2'
# 使用Requests上传图片
url = '%s/detection/detect?api_key=%s&api_secret=%s&attribute=none'%(
BASE_URL, API_KEY, API_SECRET)
files = {'img': (os.path.basename(fileDir), open(fileDir, 'rb'),
mimetypes.guess_type(fileDir)[0]), }
r = requests.post(url, files = files)
# 如果读取到图片中的头像则输出他们,其中的'face_id'就是我们所需要的值
faces = r.json().get('face')
print faces
创建Person
这个操作没有什么可以讲的内容,可以对照这段程序和官方的API介绍。
官方的API介绍可以见这里,相信看完这一段程序以后你就可以自己完成其余的API了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 上接上一段程序
# 读取face_id
if not faces is None: faceIdList = [face['face_id'] for face in faces]
# 使用Requests创建Person
url = '%s/person/create'%BASE_URL
params = {
'api_key': API_KEY,
'api_secret': API_SECRET,
'person_name': 'LittleCoder',
'face_id': ','.join(faceIdList), }
r = requests.get(url, params = params)
# 获取person_id
print r.json.()['person_id']
进度确认
到目前为止,你应该已经可以就给定的两张图片比对是否是同一个人了。
那么让我们来试着写一下这个程序吧,两张图片分别为’pic1.jpg’, ‘pic2.jpg’好了。
下面我给出了我的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def upload_img(fileDir, oneface = True):
url = '%s/detection/detect?api_key=%s&api_secret=%s&attribute=none'%(
BASE_URL, API_KEY, API_SECRET)
if oneface: url += '&mode=oneface'
files = {'img': (os.path.basename(fileDir), open(fileDir, 'rb'),
mimetypes.guess_type(fileDir)[0]), }
r = requests.post(url, files = files)
faces = r.json().get('face')
if faces is None:
print('There is no face found in %s'%fileDir)
else:
return faces[0]['face_id']
def compare(faceId1, faceId2):
url = '%s/recognition/compare'%BASE_URL
params = BASE_PARAMS
params['face_id1'] = faceId1
params['face_id2'] = faceId2
r = requests.get(url, params)
return r.json()
faceId1 = upload_img('pic1.jpg')
faceId2 = upload_img('pic2.jpg')
if face_id1 and face_id2:
print(compare(faceId1, faceId2))
else:
print('Please change two pictures')
成品
到此,所有的知识介绍都结束了,相比大致如何完成这个项目各位读者也已经有想法了吧。
下面我们需要构思一下人脸解锁的思路,大致而言是这样的:
使用一个程序设置账户(包括向账户中存储解锁用的图片)
使用另一个程序登陆(根据输入的用户名测试解锁)
这里会有很多重复的代码,就不再赘述了,你可以在这里或者这里(提取码:c073)下载源代码测试使用。
这里是设置账户的截图:
登陆
结束语
希望读完这篇文章能对你有帮助,有什么不足之处万望指正(鞠躬)。
⑻ python用OpenCV转卡通照片报错,好像是pyrdown的使用有问题
你这个是pyrdown函数使用的时候,操作一次一个 M x N 的图像就变成了一个 M/2 x N/2 的图像。像素不是2的整数倍造成pyrup函数使用时像素出现不对等
⑼ 根据抓来的数据包 怎么用python 实现图片上
以下是实现上述思路的方法:
1. 模板文件
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<formaction="">
{%csrf_token%}
<h3>用户注册</h3>
<p>用户名:<inputtype="text"name="userName"></p>
<p>密码:<inputtype="password"name="password"></p>
<p>邮箱:<inputtype="text"name="email"></p>
<inputid="avatar"type="text"value="/static/images/sample.png"name="avatar">{#实际应用中要将该input标签隐藏,display:none;#}
<p><inputtype="submit"value="注册"></p>
</form>
<div>
<inputid="avatarSlect"type="file">
<imgid="avatarPreview"src="/static/images/sample.png"title="点击更换图片">
</div>
</div>
</body>
<scriptsrc="/static/jquery-3.2.1.js"></script>
<script>
$(function(){
bindAvatar();
});
functionbindAvatar(){
if(window.URL.createObjectURL){
bindAvatar3();
}elseif(window.FileReader){
bindAvatar2();
}else{
bindAvatar1();
}
}
/*Ajax上传至后台并返回图片的url*/
functionbindAvatar1(){
$("#avatarSlect").change(function(){
varcsrf=$("input[name='csrfmiddlewaretoken']").val();
varformData=newFormData();
formData.append("csrfmiddlewaretoken",csrf);
formData.append('avatar',$("#avatarSlect")[0].files[0]);/*获取上传的图片对象*/
$.ajax({
url:'/upload_avatar/',
type:'POST',
data:formData,
contentType:false,
processData:false,
success:function(args){
console.log(args);/*服务器端的图片地址*/
$("#avatarPreview").attr('src','/'+args);/*预览图片*/
$("#avatar").val('/'+args);/*将服务端的图片url赋值给form表单的隐藏input标签*/
}
})
})
}
/*window.FileReader本地预览*/
functionbindAvatar2(){
console.log(2);
$("#avatarSlect").change(function(){
varobj=$("#avatarSlect")[0].files[0];
varfr=newFileReader();
fr.onload=function(){
$("#avatarPreview").attr('src',this.result);
console.log(this.result);
$("#avatar").val(this.result);
};
fr.readAsDataURL(obj);
})
}
/*window.URL.createObjectURL本地预览*/
functionbindAvatar3(){
console.log(3);
$("#avatarSlect").change(function(){
varobj=$("#avatarSlect")[0].files[0];
varwuc=window.URL.createObjectURL(obj);
$("#avatarPreview").attr('src',wuc);
$("#avatar").val(wuc);
{#$("#avatarUrl").load(function(){#}/*当图片加载后释放内存空间,但在jQuery3.2.1中会报错。浏览器关闭后也会自动释放*/
{#window.URL.revokeObjectURL(wuc);#}
{#})#}
})
}
</script>
</html>
2. 视图函数
upload_avatar.py
fromdjango.shortcutsimportrender,HttpResponse
deftest(request):
returnrender(request,'test.html')
defupload_avatar(request):
file_obj=request.FILES.get('avatar')
file_path=os.path.join('static/images',file_obj.name)
withopen(file_path,'wb')asf:
forchunkinfile_obj.chunks():
f.write(chunk)
returnHttpResponse(file_path)
3. 路由系统
urls.py
fromdjango.conf.urlsimporturl
fromdjango.contribimportadmin
urlpatterns=[
url(r'^admin/',admin.site.urls),
url(r'^upload_avatar/',homeViews.upload_avatar),#上传头像
url(r'^test/',homeViews.test),#测试页面
]