Python OpenCV 排泥检测代码:基于帧间差分与二值化
下面是一个基于 Python OpenCV 的排泥检测的示例代码,使用二值化处理对比前后帧:
import cv2
# 读取视频文件
video = cv2.VideoCapture('video.mp4')
# 读取第一帧
ret, frame_prev = video.read()
gray_prev = cv2.cvtColor(frame_prev, cv2.COLOR_BGR2GRAY)
while True:
# 读取当前帧
ret, frame_curr = video.read()
if not ret:
break
# 转换为灰度图像
gray_curr = cv2.cvtColor(frame_curr, cv2.COLOR_BGR2GRAY)
# 计算当前帧与前一帧的差异图像
diff = cv2.absdiff(gray_prev, gray_curr)
# 应用阈值处理将差异图像转为二值图像
_, threshold = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)
# 显示二值图像
cv2.imshow('Thresholded Difference', threshold)
# 更新前一帧
gray_prev = gray_curr
# 按下Esc键退出
if cv2.waitKey(1) == 27:
break
# 释放视频对象和窗口资源
video.release()
cv2.destroyAllWindows()
在这个代码中,我们首先读取视频文件,并在循环中逐帧处理。对于每一帧,我们将其转换为灰度图像,然后计算当前帧与前一帧的差异图像。接下来,我们应用阈值处理将差异图像转为二值图像。最后,我们显示二值图像并更新前一帧。按下Esc键可以退出程序。
请注意,根据具体的视频内容和光照条件,可能需要调整阈值值来获得更好的结果。
原文地址: https://www.cveoy.top/t/topic/p3pb 著作权归作者所有。请勿转载和采集!