Attention! This forum will be made read-only by Dec-20. Please migrate to Most of existing active users should've received invitation by e-mail.
Ask Your Question

How to save OpenCV image in MySQL database?

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

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

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

crackwitz gravatar image

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

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
Login/Signup to Answer

Question Tools

1 follower


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

Seen: 562 times

Last updated: Apr 02