python-3.x - 如何在opencv中实现从遮罩中去除阴影的代码?
问题描述
我在 opencv 中使用 MoG 方法来检测静态背景帧中的移动对象,但它也检测到阴影。我想从蒙版中移除阴影。我尝试使用灰色的阈值(因为阴影在掩码中标记为灰色),但阈值也删除了对象的灰色部分。我正在尝试实现https://pdfs.semanticscholar.org/53e0/7f60d03461def8ed4f765f2a6b7dfc4bfbd0.pdf 本文的算法。谁能告诉我如何在python中实现这个?
import cv2
import numpy as np
cap = cv2.VideoCapture('TownCentreXVID.avi')
fgbg = cv2.createBackgroundSubtractorMOG2()
while(1):
_, frame = cap.read()
mask = fgbg.apply(frame)
kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
window = cv2.namedWindow('Original', cv2.WINDOW_NORMAL| cv2.WINDOW_KEEPRATIO )
window = cv2.namedWindow('Mask', cv2.WINDOW_NORMAL| cv2.WINDOW_KEEPRATIO)
window = cv2.namedWindow('Opening', cv2.WINDOW_NORMAL| cv2.WINDOW_KEEPRATIO )
#window = cv2.namedWindow('Closing', cv2.WINDOW_NORMAL| cv2.WINDOW_KEEPRATIO)
cv2.imshow('Original',frame)
cv2.imshow('Mask',thresh)
cv2.imshow('Opening',opening)
#cv2.imshow('Closing',closing)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
cap.release()
解决方案
推荐阅读
- gcc - 如何使用 CMake 在 AIX 上生成 *.so 文件
- angular - 无法绑定到“ngForOf”,因为它不是“li”的已知属性
- javascript - 使用 Javascript 将 H1 标签更改为 H2
- google-kubernetes-engine - 是否可以通过 L4 LB 与 GKE 直接连接 grpc 客户端而不使用 ESP?
- r - R中的ggplot - 带有颜色分割图块的geom_tile
- firebase - 如何在 React Native Firebase 中检查好友的存在
- java - NoSuchMethodError SpelParserConfiguration
- rust - 如何摆脱“无法返回引用临时值的值”错误
- bash - 计算每个子目录中同一报告文件的警告数
- c# - 为什么这个类型从引用类型变成了值类型