logo
Loading...

為何數字皆為1的矩陣可以遮蔽chrome左邊的LOGO - Cupoy

import cv2import numpy as npimport pytesseract as ...

為何數字皆為1的矩陣可以遮蔽chrome左邊的LOGO

2020/02/28 下午 11:53
電腦視覺深度學習討論版
小陽
觀看數:4
回答數:1
收藏數:0

import cv2

import numpy as np

import pytesseract as pt


m1=cv2.imread("C:\\Users\\johnny-lin\\Desktop\\opencv_python_TEST20200213\\chrome.png",1)

m2=cv2.erode(m1, np.ones((30,30)))

m2=cv2.cvtColor(m2,cv2.COLOR_BGR2GRAY)

t, m2=cv2.threshold(m2, 240, 255, cv2.THRESH_BINARY)

p,t=cv2.findContours(m2,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

for d in p:

   x, y, w, h =cv2.boundingRect(d)

   if w>h:

       m2=m1[y:y+h,x:x+w].copy()

       m1[:,:]=255

       m1[y:y+h,x:x+w]=m2


cv2.imshow("Image 1",m1)

t=pt.image_to_string(m1,"eng")

print(t)


cv2.waitKey(0)

cv2.destroyAllWindows()



--------------------------------------------------------------------------------------------


m2=cv2.erode(m1, np.ones((30,30)))

該段程式碼主要控制遮蔽chrome左邊的LOGO


import numpy as np

print(m1, np.ones((30,30)))

列印出的結果是數字皆為1的矩陣


問題1:

為何數字皆為1的矩陣可以遮蔽chrome左邊的LOGO

這之間的 觀念,邏輯,想法 是甚麼?


問題2:

print(m1, np.ones((30,30)))

當我把30,30的參數改為小於30(例如:29)

就無法遮蔽chrome左邊的LOGO,這是為什麼?


問題3:

當我把chrome改成底部黑色(如下圖)

就無法遮蔽chrome左邊的LOGO,這是為什麼?

回答列表

  • 2020/02/29 下午 08:23
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:1

    這是遮罩的一種技巧,原理是「任何東西都 1 做 OR 運算都會變成 1;任何東西都 0 做 AND 運算都會變成 0」。