**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
当我尝试访问灰度图像生成直方图的bin值时,我遇到此Assert失败:
错误:第943行cv::Mat::at ... opencv2\core\mat.inl.hpp中的Assert失败(元素大小()==大小(_Tp))
以下是引发故障的代码片段:
for (int i = 0; i < 256; i++) {
hist.at<float>(i) = (hist.at<float>(i) / pixelAmount) * 255;
}
我的主要问题是我并不真正理解与Assert失败相关的问题
我查找了Histogram Calculation的OpenCV文档,他们以同样的方式访问直方图值。
提前感谢您的建议
1条答案
按热度按时间7vux5j2d1#
我假设您从另一个API调用中获得了
hist
Mat
,因此它的类型在创建时不会受到影响。at<T>()
方法要求您知道Mat的元素类型(比如CV_8U
),并在访问中使用相同的类型(uint8_t
)。有两种方法可以解决这种情况:
1.获取标量值(
uint8_t
),转换标量值使其适合您的计算,写回(uint8_t
)强制值1.将整个
Mat
转换为CV_32F
,它等效于float
,然后执行操作第一种选择:
第二种选择: