gpt4 book ai didi

c++ - 当我使用opencv函数cvNorm(image,NULL,CV_L2)时,返回异常结果,为什么?

转载 作者:行者123 更新时间:2023-11-28 03:31:19 30 4
gpt4 key购买 nike

这是opencv代码:

int main()  
{
IplImage* image=cvLoadImage("C:\\boat.png",CV_LOAD_IMAGE_GRAYSCALE);

cout<<"1-norm is : "<<cvNorm(image,NULL,CV_L1)<<endl;

cout<<"2-norm is : "<<cvNorm(image,NULL,CV_L2)<<endl; //the result is 6000+,it's too
big and unnormal!

return 0;
}

l2 范数结果很大,有 6000+,而 matlab 答案是 229,如下所示,

这是matlab代码:

>> norm(image)

ans =

229.7975

为什么?

最佳答案

相反,灰度图像的 6000+ 范数看起来很正常。灰度图像值的范围从 0 到 255,因此根据图像的大小,即使对于小至 64x64 的图像,您也可能得到 L2=sqrt(sum(image.^2))(不是实际代码)以数千、数万或更多为单位。

更有趣的是为什么 Matlab 中的 norm(image) 这么低。 norm 不接受 uint8 vector ,因此在加载图像和计算其范数之间的某处存在数据转换,它也可能具有改变图像绝对值的副作用,并且随后成为常态。

关于c++ - 当我使用opencv函数cvNorm(image,NULL,CV_L2)时,返回异常结果,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523502/

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