我最近才开始使用 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)`
我阅读了有关位运算的内容,并且了解它们是什么。但是我一直无法用非常简单的语言找到上面两行在做什么?上述函数中的参数掩码是做什么的?
我正在学习以下教程
如果有人能用非常简单的语言向我解释这些代码行中发生了什么,或者如果有人能指出一个很好的来源从最基本的角度解释它,我将非常感激。
问候
尼夏尔
最佳答案
该代码将创建一个包含前景蒙版中 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/