![](/img/trans.png)
[英]RuntimeWarning: overflow encountered in cosh -- Python. What does this mean?
[英]cv2.compare() in OpenCV Python. What does this code snippet mean?
def volume_analysis(self, threshold_image):
gamma = 0.05
flag = False
no_of_pixels = cv2.compare(threshold_image, 0, cv2.CMP_GT).sum() / 255
if self.prevNoOfPixels is not None:
if abs(self.prevNoOfPixels - no_of_pixels) / self.prevNoOfPixels > gamma:
flag = True
self.prevNoOfPixels = no_of_pixels
return flag
我猜测cv2.compare(threshold_image, 0, cv2.CMP_GT).sum()
是从阈值图像中减去一个空或 0 矩阵并将其存储在与cv2.CMP_GT
.sum()
相关的矩阵中可能从该矩阵中找到像素数。 我对吗?
但是,我找不到关于函数cv2.compare()
或cv2.CMP_GT
或.sum()
{以这种方式使用}的任何官方 python 文档。 我确实看到有一些关于在 C++ 中使用这些关键字的文章。 如果有人可以解释这些含义或分享一些文档,我将不胜感激。
没有减法,只有比较
cv2.compare
执行逐元素比较。 简而言之,给定以下实例:
cv2.compare(a, b, cv2.CMP_GT)
数组 A 中的每个元素都与数组 B 中的每个元素进行比较。标志cv2.CMP_GT
用于在每次比较中检查 A 中的元素是否大于 B 中的元素。 它返回另一个包含0
和255
的数组; 在哪里
0
-> A
中的元素不大于B
中的元素255
-> A
中的元素大于B
中的元素 OpenCV 在内部将范围限制在0-255
之间。
在以下情况下:
cv2.compare(A, B, cv2.CMP_GT).sum()
它返回一个标量,即数组A
中大于数组B
的所有位置的总和
插图:
考虑一个数组:
A
array([[ 1, 2, 3],
[-1, -2, -3],
[ 4, 0, 0]])
与0
相比
cv2.compare(a, 0, cv2.CMP_GT)
返回255
,其中A
中的元素大于0
:
array([[255, 255, 255],
[ 0, 0, 0],
[255, 0, 0]], dtype=uint8)
以下将返回A
大于0
的位置数:
cv2.compare(a, 0, cv2.CMP_GT).sum()/255
>>> 4.0
其他选项:
以下是可以使用的标志列表:
CMP_EQ
:等于CMP_GE
: 大于或等于CMP_GT
: 大于CMP_LE
: 小于CMP_LT
: 小于或等于CMP_NE
: 不等于
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.