Вы можете использовать маску для удаления областей, которые вас не интересуют. Например, используя следующее изображение в качестве маски, вы можете получить следующие результаты:
Маска
Результат
Код следующим образом:
import numpy as np
import cv2
image = cv2.imread('test.jpg')
mask = cv2.imread('mask.jpg', 0)
cv2.imshow('Original', image)
cv2.imshow('Mask', mask)
res = cv2.bitwise_and(image,image,mask = mask)
gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
fast = cv2.FastFeatureDetector_create()
# Obtain Key points, by default non max suppression is On
# to turn off set fast.setBool('nonmaxSuppression', False)
keypoints = fast.detect(gray, None)
print ("Number of keypoints Detected: ", len(keypoints))
image = cv2.drawKeypoints(image, keypoints, None,
flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imwrite('result.jpg', image)
cv2.imshow('Feature Method - FAST', image)
cv2.waitKey()
cv2.destroyAllWindows()
Редактировать: Если вы хотите сделать это в режиме реального времени (видео с веб-камеры), вам просто нужно сделать это для каждого кадра, который вы получаете с видеокамеры. Пока камера не движется, вы должны использовать одну и ту же маску для всех кадров. Вы можете сделать приведенный выше код функцией, а затем вызвать его с изображением в качестве параметра, как показано в следующем коде:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Following function will have to be created with the previews code
CallFunctionToPreviewsCode(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
Приведенный выше код взят из OpenCV Python -Tutorials Это хорошее место для изучения OpenCV для Python языка программирования.