gpt4 book ai didi

c++ - opencv cvtColor 设置/获取矩阵元素

转载 作者:行者123 更新时间:2023-11-28 00:17:36 25 4
gpt4 key购买 nike

cv::cvtColor(dst,bwImage, CV_RGB2GRAY);

如何在使用 cvtColor 后设置特定像素(例如 0,0 值)?

我通常使用:

bwImage.at<float>(0,0) = 0;

但它现在抛出异常。

OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)si
ze.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channel
s()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3
) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file C:\Users\gdarmon\Downloads
\opencv\build\include\opencv2/core/mat.hpp, line 538

更新我找到了解决方法

bwImage.convertTo(bwImage,CV_32F);
bwImage.at<float>(0,0)=0;

最佳答案

正如您已经发现的那样,您的黑白图像不包含 float ,而是 8 位无符号整数。除了你的解决方法,你还可以做

bwImage.at<uint8_t>(0,0) = 0;

如果您包括 stdint.h .由于这只是 unsigned char 的 typedef,您也可以不包含 header 并执行此操作:

bwImage.at<unsigned char>(0,0) = 0;

旁注:OpenCV 的默认 channel 顺序是 BGR,因此使用 CV_RGB2GRAY如果您没有事先对 channel 重新排序,这里将是错误的。

关于c++ - opencv cvtColor 设置/获取矩阵元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29266549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com