Ask Your Question
0

How to save OpenCV image in MySQL database?

asked 2020-03-30 08:14:42 -0600

Feedz gravatar image

I am reading an image in through cv2.imread() and cropping it (slicedImage). I want to save the result in a database as a blob.

originalImage = cv2.imread(self.imagePath.get())
    x1coord = int(self.x1.get())
    y1coord = int(self.y1.get())
    x2coord = int(self.x2.get())
    y2coord = int(self.y2.get())

    slicedImage = originalImage[x1coord:y1coord, x2coord:y2coord]

How would I do this when this is my SQL statement?

sqlQuery = "UPDATE users SET UserImage="+slicedImage +", PointOfInterest1X=%d, PointOfInterest1Y=%d, " \
               "PointOfInterest2X=%d, PointOfInterest2Y=%d WHERE Email=%s"
    inputData = (slicedImage, x1, y1, x2, y2, prevEmail)
    mycursor.execute(sqlQuery, inputData)
edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
1

answered 2020-04-02 13:32:09 -0600

crackwitz gravatar image

updated 2020-04-02 13:32:38 -0600

you can use cv.imencode() to turn a numpy array (or cv::Mat) into an array of bytes that contains the picture file, but in memory. this resulting numpy array can be turned into a python bytes object.

you can write an SQL query that inserts this bytestring into your database.

I would strongly recommend using "prepared statements" for safety and security reasons. you should pass slicedImage as an argument, not splice it into the query string.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2020-03-30 08:14:42 -0600

Seen: 3,401 times

Last updated: Apr 02 '20