使用Python在 SQLite3 中存储 OpenCV 图像
OpenCV是一个巨大的开源库,用于计算机视觉、机器学习和图像处理。 OpenCV 支持多种编程语言,如Python、C++、 Java等。它可以处理图像和视频以识别对象、面部甚至人类的笔迹。当它与各种库集成时,例如 Numpy。这是一个高度优化的数值运算库,然后你的武器库中的武器数量会增加,即你可以在 Numpy 中进行的任何运算都可以与 OpenCV 结合使用。
SQLite是一个独立的、高可靠性的、嵌入式的、功能齐全的、公共领域的 SQL 数据库引擎。它是万维网上最常用的数据库引擎。 Python有一个用于访问 SQLite 数据库的库,称为 sqlite3,用于处理自 2.5 版以来已包含在Python包中的此数据库。
在本文中,我们将使用Python将 OpenCV 图像存储在 sqlite3 数据库中。我们以这张图片“gfg.png”为例:
循序渐进的方法:
- 首先导入必要的库。
Python3
# import necessary libraries
import cv2
import sqlite3
import pandas as pd
Python3
# connect to database
conn = sqlite3.connect("gfg.db")
Python3
cursorObject = conn.cursor()
Python3
# create a table
cursorObject.execute("CREATE TABLE imgfg(id string, img blob)")
conn.commit()
Python3
im = open( 'gfg.png', 'rb' ).read()
Python3
# open the image you want to store in read more
im = open('gfg.png', 'rb').read()
conn.execute("INSERT INTO imgfg VALUES(?,?)",
("pattern", sqlite3.Binary(im)))
Python3
conn.commit()
Python3
# Use pandas to create a dataframe from
# the table and save it as a csv
table = pd.read_sql_query("SELECT * FROM imgfg", conn)
table.to_csv("imgfg" + '.csv', index_label='index')
Python3
# display table
print(table)
Python3
# import necessary libraries
import cv2
import sqlite3
import pandas as pd
# connect to database
conn = sqlite3.connect("gfg.db")
cursorObject = conn.cursor()
# create a table
cursorObject.execute("CREATE TABLE imgfg(id string, img blob)")
conn.commit()
# open the image you want to store in read more
im = open('gfg.png', 'rb').read()
conn.execute("INSERT INTO imgfg VALUES(?,?)",
("pattern", sqlite3.Binary(im)))
conn.commit()
# Use pandas to create a dataframe from
# the table and save it as a csv
table = pd.read_sql_query("SELECT * FROM imgfg", conn)
table.to_csv("imgfg" + '.csv', index_label='index')
# display table
print(table)
- 连接到 sqlite3 数据库。
蟒蛇3
# connect to database
conn = sqlite3.connect("gfg.db")
- 创建一个游标对象并获取当前的游标位置:
蟒蛇3
cursorObject = conn.cursor()
- 创建一个新表并将其提交到数据库。
蟒蛇3
# create a table
cursorObject.execute("CREATE TABLE imgfg(id string, img blob)")
conn.commit()
- 在读取模式下使用 open() 打开图像。
蟒蛇3
im = open( 'gfg.png', 'rb' ).read()
- 将图像插入表格中。
蟒蛇3
# open the image you want to store in read more
im = open('gfg.png', 'rb').read()
conn.execute("INSERT INTO imgfg VALUES(?,?)",
("pattern", sqlite3.Binary(im)))
上面的语句打开图像,然后通过简单地解释二进制 BLOB 上下文将其转换为模式。最后,它将该模式存储到表中。
- 提交到数据库。
蟒蛇3
conn.commit()
- 将 sqlite3 表存储为带有 Pandas 的 CSV 文件。
蟒蛇3
# Use pandas to create a dataframe from
# the table and save it as a csv
table = pd.read_sql_query("SELECT * FROM imgfg", conn)
table.to_csv("imgfg" + '.csv', index_label='index')
将内容存储在表变量中,然后将其转换为 CSV 文件并保存到系统中。
- 显示表格的内容。
蟒蛇3
# display table
print(table)
下面是完整的程序:
蟒蛇3
# import necessary libraries
import cv2
import sqlite3
import pandas as pd
# connect to database
conn = sqlite3.connect("gfg.db")
cursorObject = conn.cursor()
# create a table
cursorObject.execute("CREATE TABLE imgfg(id string, img blob)")
conn.commit()
# open the image you want to store in read more
im = open('gfg.png', 'rb').read()
conn.execute("INSERT INTO imgfg VALUES(?,?)",
("pattern", sqlite3.Binary(im)))
conn.commit()
# Use pandas to create a dataframe from
# the table and save it as a csv
table = pd.read_sql_query("SELECT * FROM imgfg", conn)
table.to_csv("imgfg" + '.csv', index_label='index')
# display table
print(table)
输出:
生成的 CSV: