- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在使用 minMaxLoc 来计算通过在灰度图像上运行拉普拉斯滤波器获得的数据的最大值。我的简单意图是粗略估计锐度。我遇到了一个令人困惑的情况,我已经在这里讨论过。
对于一组图像,从 minMaxLoc 函数获得的最大值如 1360、1456,450 等。
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);
我得到了 2 个莫名其妙的结果。我获得的平均值不仅大于从 minMaxLoc 获得的最大值,而且在对一组图像进行尝试时有时还为负值。样本平均值为 22567,有时为 -25678。
当我使用 abs() 来获取拉普拉斯算子结果的绝对值时,负值的出现更加令人困惑。
为了正确理解,我自己计算了最大值,然后计算了平均值:
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++)
{
if(abs(dst.at<int>(k,l))>max)
{
max = abs(dst.at<int>(k,l));
}
total = total + abs(dst.at<int>(k,l));
}
}
average = total/(rows*cols);
令人惊讶的是,我发现最大值是 8 位数字。
这就是我困惑的原因。 minMaxLoc 函数给出的最大值是多少?为什么 abs() 总的来说不起作用,为什么我得到 -ve 个平均值。?
如果代码中遗漏了某些内容,请原谅我,但这让我有些困惑。提前感谢您的帮助。
最佳答案
我认为你应该使用 .at
关于image-processing - minMaxLoc 最大值混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282412/
我已经被这个问题困扰了很长一段时间。你能帮我知道吗,Opencv 中的 minMaxLoc() 在查找 Mat 变量的最大值、最小值时考虑了什么数据类型?我从该函数中获得了某个值,但我不知道该值实际代
这是我用于模板匹配的代码,min_val、max_val、min_loc、max_loc 是什么意思?它们有什么用? import cv2 import numpy as np from matplo
我不明白 minMaxLoc 的什么参数表示或表示颜色。参数:maxVal——指向返回最大值的指针;如果不需要,则使用 NULL。maxLoc – 指向返回的最大位置的指针(在 2D 情况下);如果不
我在使用 minMaxLoc 时遇到了一些麻烦,当我尝试将点作为引用传递给 max_Loc 时,我遇到了错误。环顾四周后,我发现了很多人使用 double 而不是点的例子,但这里不是这种情况。 这里是
昨天我有一个类似的问题,并且能够推断出错误,感谢您的帮助。好吧,今天我遇到了一个非常相似的问题,但是以我最好的水平,仍然无法定位到这段特定代码中的段错误的原因。 int main()
我一直在使用 minMaxLoc 来计算通过在灰度图像上运行拉普拉斯滤波器获得的数据的最大值。我的简单意图是粗略估计锐度。我遇到了一个令人困惑的情况,我已经在这里讨论过。 对于一组图像,从 minMa
我在 opencv 和模板匹配方面遇到了一些麻烦,所以我希望这里有人可以帮助迷失的灵魂。 因此,作为我正在使用的代码的一部分,我有以下两行我不太理解,但我应该理解。 result = cv2.matc
我有一张源图片和 5 个其他样本,我想找到与源图像最匹配的样本。我的结论是应该使用模板匹配,因为直方图比较不能很好地解决问题。我使用 cv::minMaxLoc 来确定结果矩阵的最小值和最大值,但我误
我在 Python 中使用 OpenCV。 我正在尝试创建一个 Mask此函数中使用的矩阵变量:cv.minMaxLoc . Matrix 变量的大小应与我的模板图像相同,类型 = CV_8UC1 .
我在 iOS 上使用 OpenCV,该项目运行良好并且可以检测到哈里斯角,但是当我尝试使用以下行时出现编译错误: cv::minMaxLoc(cornerStrength,&minStrength,&
简单的问题,但无法弄明白。 通常它的 void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0,
我正在做模板匹配以找到人眼的虹膜。我一直在关注我在 OpenCV4Android 网站上找到的 romanhosek 教程 - http://romanhosek.cz/android-eye-det
OpenCV 中的模板匹配很棒。您可以将掩码传递给 cv2.minMaxLoc,这样您就可以只在部分图像中搜索(某种程度上)所需的模板。您也可以在 matchTemplate 操作中使用掩码,但这只会
使用 OpenCV 2.3.1。我正在运行 cv::minMaxLoc() 并且它返回最小和最大位置的点 (-1, -1),两者的值均为 0。这是什么意思? 最佳答案 以下是 minMaxLoc 的相
我是一名优秀的程序员,十分优秀!