📜  使用Python在 SQLite3 中存储 OpenCV 图像

📅  最后修改于: 2022-05-13 01:55:27.883000             🧑  作者: Mango

使用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: