2017-10-02 4 views
2

je serais si sincèrement, si quelqu'un peut me aider avec cette question: J'utilise OpenCV avec nodejs (https://github.com/TanaseButcaru/node-opencv)OpenCV - Enregistrer l'image dans DB NodeJS

J'ai un tableau de photos et j'aime lire ces photos avec la fonction readImage d'opencv, puis enregistrez-la dans la base de données.

photos.map(async(photo) => { 
    cv.readImage(`${__dirname}/${photo}`, function (error, matrix) { //insert in DB} 

Savez-vous comment puis-je enregistrer cette « matrice » dans DB, puis l'utiliser pour récupérer l'image et la comparer (ImageSimilarity)?

Répondre

2

Je ne suis pas sûr que ces options sont mises en œuvre dans le nœud-OpenCV, mais:

  1. Vous pouvez soit obtenir les non compressées, des données binaires brutes de la matrice et le stocker sous forme de tableau en JSON format (en supposant que vous travaillez avec un DB qui peut stocker ou sérialiser des données au format JSON, comme mongodb)

  2. Utilisez le module imcodec d'OpenCV pour encoder l'image au format base64, qui peut être stocké sous forme de chaîne. Cependant, selon le codec, vous risquez de perdre la qualité de l'image, donc je recommanderais png.

Vous pouvez également jeter un oeil à: https://github.com/justadudewhohacks/opencv4nodejs, qui implémente les deux options. Ou au moins les exemples de la façon de sérialiser un Mat en tant que tableau JSON ou tampon de noeud peuvent vous aider avec votre problème.

+0

Salut justadudewhohacks merci pour votre commentaire! Je ne pouvais pas utiliser imcodec car il n'est pas implémenté dans node-opencv. J'utilise la fonction imageOpenCV.toBuffer pour l'image et l'enregistre dans DB. C'était le seul moyen d'économiser en DB. –