安装:pip install flask
人脸识别
index.py
from flask import Flask, render_template
import cv2
app = Flask(__name__)
@app.route('/')
def index():
outname = detect('static/2.jpg') # 待识别图片
return render_template('index.html', outname=outname)
def detect(filename):
face_cascade = cv2.CascadeClassifier('C:/Users/13311/Anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
#括号内路径为:'Python路径下/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml'
img = cv2.imread(filename)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
outname = 'static/newface.jpg' # 输出图片
cv2.imwrite(outname, img)
return outname
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>媒体大数据</title>
</head>
<body>
人脸识别
<img src="{{outname}}" />
</body>
</html>
双括号调用上文py文件中的outname输出文件。
待识别图片:2.jpg
网页输出结果:newface.jpg
Python+Flask+MySQL调用数据库
连接数据库
安装所需包:pip inatsll pymysql
链接并调用数据库代码:
import pymysql
db = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset='utf8')
cursor = db.cursor()
try:
sql="select * from map_enword limit 200"
cursor.execute(sql)
rs = cursor.fetchall()
rs = list(rs)
print(rs)
except:
rs = 'db-error'
print('py-db-error')
注意
原本代码:
db = pymysql.connect("localhost", "root", "123456", "test", charset='utf8')
python连接mysql数据库报错:init() takes 1 positional argument but 5 were given
更改代码格式为:
db = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset='utf8')
即可正常运行,猜测可能是pyMySQL的版本不一样导致的。
输出结果:
可正常输出数据库内容,数据库连接并调用成功。
输出四六级单词表
english.py
from flask import Flask, render_template
import pymysql
app = Flask(__name__)
@app.route('/english')
def english():
db = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset='utf8')
cursor = db.cursor()
try:
sql = "select * from map_enword limit 200"
cursor.execute(sql)
rs = cursor.fetchall()
rs = list(rs)
print(rs)
except:
rs = 'db-error'
print('py-db-error')
db.close()
return render_template('english.html', rs=rs)
if __name__ == '__main__':
app.run()
english.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>英语四六级词表</title>
</head>
<body>
<h1>英语四六级词表</h1>
{% for r in rs %}
{{r}}<br>
{% endfor %}
</body>
</html>
输出结果:
增加一个查询的输入框
search.py
from flask import Flask, render_template, request
import pymysql
app = Flask(__name__)
@app.route('/search')
def search():
wanted = request.args.get("wanted", type=str)
if wanted is None:
wanted = 'pineapple'
db = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset='utf8')
cursor = db.cursor()
try:
sql = "select * from map_enword where english like '%" + wanted + "%'"
cursor.execute(sql)
rs = cursor.fetchall()
rs = list(rs)
print(rs)
except:
rs = 'db-error'
print('py-db-error')
db.close()
return render_template('english.html', rs=rs)
if __name__ == '__main__':
app.run()
search.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>英语四六级词表</title>
</head>
<body>
<h1>英语四六级词表</h1>
<form action="/search">
<input type="text" name="wanted" value="" default="apple">
<input type="submit" value="搜索">
</form>
{% for r in rs %}
{{r}}<br>
{% endfor %}
</body>
</html>
输出结果:
注意
如无搜索关键词,应设置默认结果,即未搜索时页面输出情况。
如下图代码:
if wanted is None:
wanted = 'pineapple'
即搜索框无输入时,默认搜索词为pineapple
输出结果: