gpt4 book ai didi

opencv - 如何通过 CV_MAT_ELEM 在多 channel 矩阵中设置元素?

转载 作者:行者123 更新时间:2023-12-02 17:55:02 24 4
gpt4 key购买 nike

我创建了 OpenCV矩阵:

CvMat * src = cvCreateMat(1, 2, CV_32FC2);

然后我要设置元素 row=0, col=1, channel=1
根据 documentation for CvMat 描述中的示例
我尝试使用以下代码设置元素:
 CV_MAT_ELEM(*src, float, 0, 1 * 2 + 1) = 123;

但是 assert被解雇。
原因很明显:

我们在 OpenCV 源代码中有以下定义:
#define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size )  \
(assert( (unsigned)(row) < (unsigned)(mat).rows && \
(unsigned)(col) < (unsigned)(mat).cols ), \
(mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col))

#define CV_MAT_ELEM( mat, elemtype, row, col ) \
(*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))

就我而言 mat.cols == 2col == 1 * 2 + 1 == 3 .

出了什么问题:OpenCV 源代码中的文档或断言?
如何管理这个?
如何设置多 channel 矩阵的元素?
谢谢。

附言如果有人在这里,请致 OpenCV 开发人员。
当我按“您现在可以创建一个”以创建新帐户以从页面 http://opencv.willowgarage.com/wiki/Welcome?action=login 报告错误时,我得到错误“Unknown action newaccount”。

更新:

我使用 OpenCV 2.1。

最佳答案

我一直在使用 CV_MAT_ELEM :

float * src_ptr = (float*)src->data.ptr;
*(src_ptr + 1 * 2 + 1) = 123;

关于opencv - 如何通过 CV_MAT_ELEM 在多 channel 矩阵中设置元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8498695/

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