w moim programie Mam funkcję, która pobiera obraz z kamery i powinna spakować wszystkie dane w strukturze OpenCV Mat
. Z kamery otrzymuję szerokość, wysokość i unsigned char*
do bufora obrazu. Moje pytanie brzmi: jak utworzyć Mat z tych danych, jeśli mam globalną zmienną Mata. Typ struktury maty wziąłem CV_8UC1.opencv tworzenie macie z danych kamery
Mat image_;
function takePhoto() {
unsigned int width = getWidthOfPhoto();
unsinged int height = getHeightOfPhoto();
unsinged char* dataBuffer = getBufferOfPhoto();
Mat image(Size(width, height), CV_8UC1, dataBuffer, Mat::AUTO_STEP);
printf("width: %u\n", image.size().width);
printf("height: %u\n", image.size().height);
image_.create(Size(image.size().width, image.size().height), CV_8UC1);
image_ = image.clone();
printf("width: %u\n", image_.size().width);
printf("height: %u\n", image_.size().height);
}
Kiedy przetestować mój program, mam prawo width
i height
z image
, ale width
i height
mojego globalnego Mat image_
jest 0
. Jak mogę poprawnie umieścić dane w moim globalnym Mat
?
Dziękuję.
Witaj Karlphilip, Bardzo dziękuję za przyczynienie się do stackoverflow i pomoc w nas. Jestem nowy w OpenCV i uważam, że twoja odpowiedź jest bardzo przydatna w projekcie, nad którym teraz pracuję. Mam szybkie pytanie, jaka jest różnica między: cv :: Mat i cvMat i cvCreateMat()? – user261002
'cv :: Mat' jest typem maty dla interfejsu C++ OpenCV. 'cvMat' jest dla interfejsu C. 'cvCreateMat()' tworzy 'cvMat' w interfejsie C. Nie przejmujmy się jeszcze tym wątkiem, jeśli masz pytania, możesz zadawać je w nowych wątkach. Na razie. – karlphillip