cv::Mat
,如下所示:cv::Mat drawing, img_grad, img_bright, img_cov;
(ver1)cv::Mat drawing, img_grad, img_bright, img_cov, img_notused;
(ver2)
在代码i中,然后将img_cov定义如下:
img_cov = Mat::zeros( somemat.size(), CV_32FC(6) )
奇怪的是,如果我将另一个Mat添加到我的多个Mats的头部声明(参见上面的ver2)中,即使img_notused
它从未使用过,我也无法访问我{{1}的任何其他频道比0.访问例如通过img_cov
导致崩溃。
似乎是一个mermoy分配的东西。有人可以向我解释一下吗?
答案 0 :(得分:3)
您使用错误的命令来访问图像值(它应该在之前崩溃,也许您在发布模式下编译...)。
你的行应该是这样的:
typedef Vec<6,float> Vec6f;
Vec6f pixel = img_cov.at<Vec6f>(i,j);
float value_you_look_for = pixel[1]; // note that 1 means the second channel of 6.
因为CV_32FC(6)
表示渠道中包含float
值的6通道矩阵。