Chcę przetestować funkcję, która szuka dla określonej głębokości mat & & liczbę kanałówUstawianie głębokości do cv :: Mat
To test ...
if (image.channels() == 1 && image.depth() == 8) ...
else if (image.channels() == 1 && image.depth() == 16) ...
else if (image.channels() == 1 && image.depth() == 32) ...
else
{
if ((image.channels() != 3) || (image.depth() != 8))
{printf("Expecting rgb24 input image"); return false;}
...
}
Wolę przetestować z konfekcjonowanego maty, aby uniknąć wykorzystania lokalnych zasobów:
cv::Mat M(255, 255, CV_8UC3, cv::Scalar(0,0,255));
printf("M: %d %d \n", M.channels(), M.depth());
cv::Mat M1(255, 255, CV_32F, cv::Scalar(0,0,255));
cv::Mat M2(255, 255, CV_32FC3, cv::Scalar(0,0,255));
cv::Mat M2(255, 255, CV_8SC3, cv::Scalar(0,0,255));
I eksperymentowali z różnego rodzaju kombinacji, ale jeśli mogę wydrukować, otrzymuję 0 głębię.
Próbowałem również załadować plik PNG lub jpg - z tego samego rezultatu (wolę nie używać plików zewnętrznych ... ale nie widzę powodu, dlaczego to nie działa)
cv::Mat M3 = cv::imread("c:/my_image.png", CV_LOAD_IMAGE_COLOR);
cv::Mat M3 = cv::imread("c:/my_image.jpg", CV_LOAD_IMAGE_COLOR);
Wszystkie wydają się mieć głębokość = 0?
Czy jest coś jeszcze, co muszę zrobić? Nie widzę nic w dokumentacji ...
Dziękuję
Więc ... test w funkcji jest wtedy błędny. .. Zmieniłem go z wersji c tam, gdzie było (image-> nChannels == 1 && image-> depth == 8) i tak na – Thalia
tak, interfejs C++ jest inny, oto najnowsza dokumentacja na temat głębi (): http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-depth – cxyzs7