cv :: Mat rileva PixelFormat

Sto cercando di usare pictureBox-> Image (Windows Forms) per visualizzare un’immagine cv :: Mat (openCV). Voglio farlo senza salvare l’immagine come file (perché voglio reimpostare l’immagine ogni 100 ms). Ho appena trovato questo argomento qui: Come visualizzare un cv :: Mat in un’applicazione Windows Form?

Quando uso questa soluzione l’immagine sembra essere solo bianca. Immagino di aver preso il PixelFormat sbagliato. Quindi, come faccio a capire il PixelFormat di cui ho bisogno? Non ho visto nessun metodo in cv :: Mat per ottenere informazioni a riguardo. Oppure dipende dall’immagine Fonte che uso per creare questo cv :: Mat? Grazie mille 🙂

Qui ho preso uno schermo. Non è completamente bianco. Quindi immagino ci siano delle informazioni sul colore. Ma forse mi sbaglio. Schermo

cv :: Mat.depth () restituisce il tipo di pixel, ad es. CV_8U per 8 bit senza segno ecc. E cv :: Mat.channels () restituisce il numero di canali, in genere 3 per un’immagine a colors

Per le immagini normali, opencv generalmente utilizza l’ordine dei colors BGR a 8 bit che dovrebbe mappare direttamente su una bitmap di Windows o sulla maggior parte delle librerie di Windows.

Quindi probabilmente vorrai system.drawing.imaging.pixelformat.Format24bppRgb, non so quale ordine (RGB o BGR) usi ma puoi usare opencv cv :: cvtColor () con CV_BGR2RGB per convertire in RGB

Grazie per l’aiuto! Il problema era qualcos’altro. Non ho appena allocato la memoria per l’object immagine. Quindi non c’era nulla da mostrare davvero. Utilizzando cv::Mat img; nell’headerFile e img = new cv::Mat(120,160,0); in Costruttore (class ocvcamimg) ha funzionato. ( ocvcamimg->captureCamMatImg() restituisce img ).