我想测试一个正在寻找特定垫子深度&&通道数的函数
它有一个测试...
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;}
...
}
我更喜欢用人造垫子进行测试,以避免使用本地资源:
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));
我已经尝试过各种组合,但如果我打印,我会得到 0 深度。
我也尝试加载 png 或 jpg 文件 - 结果相同(我不喜欢使用外部文件......但我看不出为什么这不起作用)
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 );
他们似乎都有 depth = 0 ?
我还有其他事情要做吗?我在文档中看不到任何内容。