繁体   English   中英

OpenCV Python 中的 cv2.compare()。 这个代码片段是什么意思?

[英]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 中的元素。 它返回另一个包含0255的数组; 在哪里

  • 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM