gpt4 book ai didi

c++ - 错误。表达式必须有类类型

转载 作者:行者123 更新时间:2023-11-28 02:51:36 24 4
gpt4 key购买 nike

我正在尝试将 Mat 传递给一个函数,但是当我尝试获取图像的 float 数据时出现了一些错误。谁能告诉我哪里出了问题?

int _tmain(int argc, _TCHAR* argv[])
{
cv::Mat img;//gradients from fingerprint image
cv::Mat dst;
bh2Rad(&img,&dst);
}

void bh2Rad(Mat* srcMat,cv::Mat* dstMat)
{
for (int i=0; i < srcMat->rows ;i++)
{
float* srcP = srcMat->data.fl + srcMat->width * i;// srcMat Error.
float* dstP = dstMat->data.fl + dstMat->width * i;//dstMat Error

for (int j = 0; j < srcMat->cols ;j++)
dstP[j] = srcP[j] * BH_DEG_TO_RAD;
}
}

最佳答案

您似乎将旧的 (c-api) CvMat 与 cv::Mat 与像素操作混淆了。

此外,灰度图像是 uchar,而不是 float,您不能以任意格式访问它的像素(除非您之前使用 convertTo() float)。

int main(int argc, char* argv[])
{

cv::Mat img = cv::imread("original.bmp", CV_LOAD_IMAGE_GRAYSCALE);
cv::Mat dst;

bh2Rad(img,dst);

}

//
// please use references with cv::Mat, not pointers.
// those things are refcounted, you're thrashing that with passing pointers.
//
void bh2Rad(const cv::Mat & srcMat, cv::Mat & dstMat)
{
dstMat.create(srcMat.size(),srcMat.type());
for (int i=0; i < srcMat.rows ;i++)
{
const uchar* srcP = srcMat.ptr<uchar>(i);
uchar* dstP = dstMat.ptr<uchar>(i);

for (int j = 0; j < srcMat.cols ;j++)
dstP[j] = srcP[j] * BH_DEG_TO_RAD;
}
}

关于c++ - 错误。表达式必须有类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915220/

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