Flask

安装: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
输出结果:
默认输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值