python - OpenCv 按位运算物理意义

标签 python opencv computer-vision

我最近才开始使用 OpenCv,在线文档似乎还不错。然而,有一个关于图像添加和“按位运算”的教程。我非常严重地卡在了以下几点

 `# Now black-out the area of logo in ROI
  img1_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)

  # Take only region of logo from logo image.
  img2_fg = cv2.bitwise_and(img2,img2,mask = mask)`

我阅读了有关位运算的内容,并且了解它们是什么。但是我一直无法用非常简单的语言找到上面两行在做什么?上述函数中的参数掩码是做什么的?

我正在学习以下教程

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_image_arithmetics/py_image_arithmetics.html

如果有人能用非常简单的语言向我解释这些代码行中发生了什么,或者如果有人能指出一个很好的来源从最基本的角度解释它,我将非常感激。

问候

尼夏尔

最佳答案

该代码将创建一个包含前景蒙版中 img2 的所有原始像素的图像和一个包含背景中的图像 roi 的所有原始像素的图像掩码(倒置的前景掩码)。

所以结果是一个图像,其中所有非 mask 像素都变成黑色,其余像素不变。

首先它计算图像的按位与,这将只是图像本身(确切地说,每个为 1 的位之后都为 1)。但除此之外,它还会应用蒙版并使蒙版中未激活的每个像素都保留为 0。

恕我直言,这有点被黑了,代码应该改为:

# Now black-out the area of logo in ROI
img1_bg = cv2.bitwise_and(roi,mask_inv)

# Take only region of logo from logo image.
img2_fg = cv2.bitwise_and(img2,mask)

但要使其起作用,蒙版必须与图像具有相同数量的 channel ,因此这通常不起作用,并且会通过将蒙版转换为多 channel 图像来引入一些开销。

关于python - OpenCv 按位运算物理意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621395/

相关文章:

python - 无法运行远大前程快速入门

c++ - 简单 OpenCv c++ 程序 CodeBlock 窗口 7 中的错误

python - Visual Studio Code "editor.showUnused": true not working

python - 有没有办法从中创建列表理解?

opencv - 有没有办法在不知道深度 Z 的情况下从现实世界物体的运动中找到光流速度?

image - 背景图像的粒子分割

python - 如何使用OpenCV在几乎圆形的孔中找到各种圆弧的不同中心?

machine-learning - Caffe中Tiling层的用途是什么

python - pytorch dataset.imagefolder 的加载器选项有什么作用?

c++ - 为什么 CMake 使用 Opencv 未正确设置包含目录(MSVC 2010 项目)