gpt4 book ai didi

c++ - 我想把IpLmage转mat,opencv的时候遇到一些错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:40 25 4
gpt4 key购买 nike

void LBP(Mat src, IplImage* dst)
{
int tmp[8] = { 0 };
CvScalar s;

Mat temp = Mat(src.size(), IPL_DEPTH_8U, 1);
uchar *data = (uchar*)src.data;
int step = src.step;

//cout << "step" << step << endl;

for (int i = 1; i<src.size().height - 1; i++)
for (int j = 1; j<src.size().width - 1; j++)
{
int sum = 0;
if (data[(i - 1)*step + j - 1]>data[i*step + j])
tmp[0] = 1;
else
tmp[0] = 0;
if (data[i*step + (j - 1)]>data[i*step + j])
tmp[1] = 1;
else
tmp[1] = 0;
if (data[(i + 1)*step + (j - 1)]>data[i*step + j])
tmp[2] = 1;
else
tmp[2] = 0;
if (data[(i + 1)*step + j]>data[i*step + j])
tmp[3] = 1;
else
tmp[3] = 0;
if (data[(i + 1)*step + (j + 1)]>data[i*step + j])
tmp[4] = 1;
else
tmp[4] = 0;
if (data[i*step + (j + 1)]>data[i*step + j])
tmp[5] = 1;
else
tmp[5] = 0;
if (data[(i - 1)*step + (j + 1)]>data[i*step + j])
tmp[6] = 1;
else
tmp[6] = 0;
if (data[(i - 1)*step + j]>data[i*step + j])
tmp[7] = 1;
else
tmp[7] = 0;

s.val[0] = (tmp[0] * 1 + tmp[1] * 2 + tmp[2] * 4 + tmp[3] * 8 + tmp[4] * 16 + tmp[5] * 32 + tmp[6] * 64 + tmp[7] * 128);

cvSet2D(dst, i, j, s);
}

}

上面是我的本地二进制模式的原始代码,src 是输入矩阵,dst 是输出。现在我想将 void LBP(Mat src, IplImage* dst) 中的 IPLimage 更改为 void LBP(Mat src, mat dst),我尝试了很多方法,但我总是遇到断言失败或其他问题,我认为它可能是cvSet2D(dst, i, j, s);的问题

这是输入源的定义:

Mat Gray_face = Mat(image.size(), image.depth(), 1);

这是我对输出 dst 的定义:

IplImage* lbp_face = cvCreateImage(Gray_face.size(), IPL_DEPTH_8U, 1);

我想将它更改为 mat 并使其适用于我的程序。

这就是我调用 LBP 函数的方式:

LBP(Gray_face, lbp_face);

我对此很陌生,有人可以帮助我吗?非常感谢!

最佳答案

的确,cvSet2D 是旧界面。要将一个点设置为 cv::Mat dst,您可以使用 at()。首先,您首先(重新)将其分配为:

dst.create(src.size(),CV_8U);

然后根据您的情况设置一个值(value)点:

dst.at<char>(i,j) = (tmp[0] * 1 + tmp[1] * 2 + tmp[2] * 4 + tmp[3] * 8 + tmp[4] * 16 + tmp[5] * 32 + tmp[6] * 64 + tmp[7] * 128);

最后但同样重要的是,如果你想要返回结果,你的函数定义应该是:

 void LBP(Mat src, Mat & dst);

带有对目的地的引用 (&)。

关于c++ - 我想把IpLmage转mat,opencv的时候遇到一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040741/

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