1

我刚刚遇到了一个奇怪的问题。在我的班级的标题中,我定义了多个cv::Mat这样的:
cv::Mat drawing, img_grad, img_bright, img_cov; (ver1)
cv::Mat drawing, img_grad, img_bright, img_cov, img_notused;(ver2)

然后在代码中,我将 img_cov 定义如下:
img_cov = Mat::zeros( somemat.size(), CV_32FC(6) )
奇怪的是,如果我将另一个 Mat 添加到我的多个 Mats 的标头声明(参见上面的 ver2)中,即使img_notused它从未使用过,我也无法访问任何其他我比 0 的频道。img_cov访问例如 viaimg_cov.at<float>( j, i, 1)会导致崩溃。

似乎是一个mermoy分配的事情。有人可以向我解释一下吗?

4

1 回答 1

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)表示一个 6 通道矩阵,通道float中有值。

供您参考:链接到特定文档

于 2012-12-02T14:53:30.420 回答