Вот часть моего кода:
import sqlite3
import tkinter
import time
import PIL.Image, PIL.ImageTk
from PIL import Image,ImageTk
import cv2
import numpy as np
from tkinter import Tk, Label, Button, Entry, Toplevel
r=Tk()
conn = sqlite3.connect('datastorage.db')
print("Opened database successfully");
def snapshot(self):
# Get a frame from the video source
ret, frame = self.vid.get_frame()
Я захватываю кадр из видео и мне нужно вставить его в базу данных, которая содержит текстовый столбец и столбец большого двоичного объекта. Есть и другие подобные вопросы, которые предлагают преобразовать в строку и сохранить, но поскольку у меня уже есть изображения в формате BLOB-объектов, и я извлекаю их, используя декодирование, как показано в коде ниже, мне нужно хранить только BLOB-объекты.
blob_data=row[1]
nparr = np.frombuffer(blob_data, np.uint8)
img_np = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
image1=cv2.resize(img_np,(260,200))
#cv2.imshow("data",image1)
#break
#Rearrang the color channel
b,g,r = cv2.split(image1)
image1 = cv2.merge((r,g,b))
hsv1=cv2.cvtColor(image1, cv2.COLOR_RGB2HSV)
kernel2 = np.ones((3,3),np.uint8)
Я попытался использовать следующий запрос:
cursor=conn.execute("create table if not exists user_6 (id text, img blob)")
cursor=conn.execute("insert into user_6 values (?,?)",(ins,sqlite3.Binary(frame)))
, но я не могу отобразить его, используя тот же метод, который использовался для отображения всех других записей. Код, используемый для отображения, является вторым блоком кода. Я сталкиваюсь с ошибкой, как показано:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\ABC\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\Users\ABC\Desktop\Python tut\gui databse.py", line 71, in display
image1=cv2.resize(img_np,(130,100))
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4045: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
Кто-нибудь может мне помочь?