Image processing minMaxLoc最大值混淆
我一直在使用minMaxLoc计算通过在灰度图像上运行拉普拉斯滤波器获得的数据的最大值。我的简单意图是粗略估计锐度。我遇到了一个令人困惑的情况,我在这里已经讨论过了 对于一组图像,从minMaxLoc函数获得的最大值类似于1360、1456450等Image processing minMaxLoc最大值混淆,image-processing,opencv,computer-vision,vision,Image Processing,Opencv,Computer Vision,Vision,我一直在使用minMaxLoc计算通过在灰度图像上运行拉普拉斯滤波器获得的数据的最大值。我的简单意图是粗略估计锐度。我遇到了一个令人困惑的情况,我在这里已经讨论过了 对于一组图像,从minMaxLoc函数获得的最大值类似于1360、1456450等 Laplacian(src_gray,dst,ddepth,kernel_size,scale,delta,BORDER_DEFAULT); minMaxLoc(dst,&min,&estimate,&minL
Laplacian(src_gray,dst,ddepth,kernel_size,scale,delta,BORDER_DEFAULT);
minMaxLoc(dst,&min,&estimate,&minLoc,&maxLoc,noArray());//Estimate is the max value
现在我只是试着计算平均值,以便更好地了解图像中锐度的分布。注意,DST是保存拉普拉斯数据的Mat变量
Size s = dst.size();
rows = s.height;
cols = s.width;
total = 0;
max = 0;
for(int k=0;k<rows;k++)
{
for(int l=0;l<cols;l++)
{
total = total + abs(dst.at<int>(k,l));
}
}
average = total/(rows*cols);
Size s=dst.Size();
行=s高度;
cols=s.宽度;
总数=0;
max=0;
对于(int k=0;k我认为您应该使用.at而不是int(将图像视为灰度),否则该值将溢出!我认为您应该使用.at而不是int(将图像视为灰度)否则该值将溢出!通常图像有8位图像。因此,很可能是您使用错误的方法访问图像的像素。在这种情况下,您从矩阵中读取的值是错误的
要检查是否使用单通道整数矩阵,请使用
dst.type() == CV_32SC1 .
dst.type() == CV_8SC1 .
检查是否使用8位矩阵
dst.type() == CV_32SC1 .
dst.type() == CV_8SC1 .
如果您实际拥有这样一个8位整数矩阵,则需要使用.at
访问像素
即使只向total变量添加了正值,total变量仍然为负值的原因可能是由于。您可以通过使用长整型int
作为total来避免这种情况。通常图像有8位图像。因此,很可能是您使用错误的方法访问图像的像素。在这种情况下,您读取的值来自矩阵的数据是错误的
要检查是否使用单通道整数矩阵,请使用
dst.type() == CV_32SC1 .
dst.type() == CV_8SC1 .
检查是否使用8位矩阵
dst.type() == CV_32SC1 .
dst.type() == CV_8SC1 .
如果您实际拥有这样一个8位整数矩阵,则需要使用.at
访问像素
即使只向total变量添加了正值,total变量仍然为负值的原因可能是由于。可以通过对total使用long int
来避免这种情况。是否确定dst矩阵的类型为“int”?负值total
可能是整数溢出的结果。如果使用相对值,则可能会发生这种情况ly large images.dst是一个Mat变量,我想它的值会是int。我不确定。非常感谢您指出这一点。您确定您的dst矩阵的类型为“int”吗?负的total
可能是整数溢出的结果。如果您使用相对较大的images.dst是一个Mat变量,我认为值将是int。我不确定。非常感谢您指出这一点。对不起,但我想我不明白您的意思。您想让我用什么来代替int?对不起,但我想我不明白您的意思。您想让我用什么来代替int?我如何使用CV_32SC1,CV_8SC!变量?我是否缺少任何名称空间或clude头文件?我无法访问它。你能帮助我吗?我在linux中使用gcc opencv 2.4.3。uchar
不是有符号8位矩阵的正确类型,char
is。我如何使用该CV_32SC1,CV_8SC!变量?我是否缺少任何名称空间或包含头文件?我无法访问它。你能帮助我吗m在linux中使用gcc opencv 2.4.3。uchar
不是有符号8位矩阵的正确类型,char
是。