Almacenamiento de imagen OpenCV en SQLite3 con Python

OpenCV es una enorme biblioteca de código abierto para visión artificial, aprendizaje automático y procesamiento de imágenes. OpenCV admite una amplia variedad de lenguajes de programación como Python, C++, Java, etc. Puede procesar imágenes y videos para identificar objetos, rostros o incluso la escritura a mano de un ser humano. Cuando se integra con varias bibliotecas, como Numpy. Que es una biblioteca altamente optimizada para operaciones numéricas, entonces la cantidad de armas aumenta en su Arsenal, es decir, cualquier operación que se pueda hacer en Numpy se puede combinar con OpenCV.

SQLite es un motor de base de datos SQL autónomo, de alta confiabilidad, integrado, con todas las funciones y de dominio público. Es el motor de base de datos más utilizado en la World Wide Web. Python tiene una biblioteca para acceder a bases de datos SQLite, llamada sqlite3, destinada a trabajar con esta base de datos que se incluye con el paquete Python desde la versión 2.5.

En este artículo, almacenaremos una imagen OpenCV en la base de datos sqlite3 con Python. Tomemos esta imagen “gfg.png” como ejemplo:

Enfoque paso a paso:

  • Primero importe las bibliotecas necesarias.

Python3

# import necessary libraries
import cv2
import sqlite3
import pandas as pd
  • Conéctese a la base de datos sqlite3.

Python3

# connect to database
conn = sqlite3.connect("gfg.db")
  • Cree un objeto de cursor y obtenga la ubicación actual del cursor:

Python3

cursorObject = conn.cursor()
  • Cree una nueva tabla y confírmela a la base de datos.

Python3

# create a table
cursorObject.execute("CREATE TABLE imgfg(id string, img blob)")
conn.commit()
  • Abra la imagen con open() en modo lectura.

Python3

im = open( 'gfg.png', 'rb' ).read()
  • Inserta la imagen en la tabla.

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)))

La declaración anterior abre la imagen y luego la convierte en un patrón simplemente interpretando el contexto BLOB binario. Finalmente, almacena ese patrón en la tabla.

  • Comprometerse con la base de datos.

Python3

conn.commit()
  • Almacene la tabla sqlite3 como un archivo CSV con pandas.

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')

El contenido se almacena en la variable de la tabla y luego se convierte a un archivo CSV y se guarda en el sistema.

  • Mostrar el contenido de la tabla.

Python3

# display table
print(table)

A continuación el programa completo:

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)

Producción:

CSV generado:

Publicación traducida automáticamente

Artículo escrito por soumibardhan10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *