Sto utilizzando il wrapper EmguCV 3.0.0 alla libreria OpenCV 3.0. Sto utilizzando la classe Mat
in alcuni punti. Ecco un esempio di un singolo canale, immagine 8x8 realizzato double
valori:Come posso ottenere e impostare i valori dei pixel di un'immagine EmguCV Mat?
Mat image = new Mat(8, 8, DepthType.Cv64F, 1);
La classe Image<>
fornisce reasonable means for getting and setting pixel values, e il metodo è identico per la classe Matrix<>
, ma non sembra così evidente per la classe Mat
. L'unico modo che ho capito come impostare singolo pixel sta usando una maschera:
// set two pixel values, (0,0) to 9.0, (2, 3) to 42.0
Matrix<byte> mask = new Matrix<byte>(8,8);
mask.Data[0, 0] = 1;
image.SetTo(new MCvScalar(9.0), mask);
mask = new Matrix<byte>(8,8);
mask.Data[2, 3] = 1;
image.SetTo(new MCvScalar(42.0), mask);
Questo è sente come dovrebbe essere due linee, non sei, così mi sento come mi manca qualcosa. Le cose si complicano ulteriormente quando lo Mat
è più di un canale, perché Matrix<>
è solo 2D, quindi la maschera deve essere utilizzata per impostare il pixel su ciascun canale.
Non posso permettermi il tempo o la memoria per impostare i pixel in questo modo. Come posso impostare i pixel con una singola chiamata di metodo?
immagine [0,0] = 9; dovrebbe farlo – Miki
Questo è quello che mi aspettavo pure. Ma non funziona. Ecco l'errore: * "Impossibile applicare l'indicizzazione con [] a un'espressione di tipo 'Emgu.CV.Mat'" * – kdbanman