Python Opencv。如何跟踪泥沙的流速

Python Opencv。如何跟踪泥沙的流速,python,opencv,Python,Opencv,我正在编写一个脚本,以确定量筒中的沉降速度。我制作了一个时间间隔为30秒的timelapse视频。在图像上,您可以看到左侧的3张图片t0,以及richt上的3张图片。我想确定沉降速度,但找不到解决问题的代码 如果没有一个程序,你将如何解决它?答案是什么?因为我每30秒有一张图片。通常在没有程序的情况下,我会确定黄/红线将移动的距离,并按时间进行划分。如图所示,有一些大的线与3.5厘米的距离相关。你自己控制/运行实验吗?你能用不同的颜色给大线条涂上颜色,让你的生活变得更简单吗?例如,最上面的大红

我正在编写一个脚本,以确定量筒中的沉降速度。我制作了一个时间间隔为30秒的timelapse视频。在图像上,您可以看到左侧的3张图片t0,以及richt上的3张图片。我想确定沉降速度,但找不到解决问题的代码


如果没有一个程序,你将如何解决它?答案是什么?因为我每30秒有一张图片。通常在没有程序的情况下,我会确定黄/红线将移动的距离,并按时间进行划分。如图所示,有一些大的线与3.5厘米的距离相关。你自己控制/运行实验吗?你能用不同的颜色给大线条涂上颜色,让你的生活变得更简单吗?例如,最上面的大红,第二条大绿,第三条大黄,第四条青色。将摄像头移离注射器/气瓶更远。在圆筒后面放一块发光的墙或一张纸。修复图片的制作方式是你能做的最好的事情。这些图片不必要地难以处理。将相机移得更远将减少视差误差。。。如果没有一个程序,你将如何解决它?答案是什么?因为我每30秒有一张图片。通常在没有程序的情况下,我会确定黄/红线将移动的距离,并按时间进行划分。如图所示,有一些大的线与3.5厘米的距离相关。你自己控制/运行实验吗?你能用不同的颜色给大线条涂上颜色,让你的生活变得更简单吗?例如,最上面的大红,第二条大绿,第三条大黄,第四条青色。将摄像头移离注射器/气瓶更远。在圆筒后面放一块发光的墙或一张纸。修复图片的制作方式是你能做的最好的事情。这些图片不必要地难以处理。将相机移得更远将减少视差误差。。。
import cv2
import numpy as np
# import numpy as np
cnt = []
cap = cv2.VideoCapture('/Users/nite.mp4')


ret, frame1 = cap.read()
frame1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)

#hoogte,hoogte+ ..... breedte,breedte+
cropped1 = frame1[300:800, 920:1000]
cv2.imshow("cropped first frame", cropped1)

bg = None #achtergrond reference eerste frame

# Settings
interval = 5
active_line = None
frame_counter = 0
last_frame_number = 0

s_per_frame = 1 / 2  # FPS = 2
m_per_pixel = 0.11 / 264  # in meter afstand per pixel
distance = m_per_pixel * interval   #distance per measurement

velocities = list()
distances = list()

while(cap.isOpened()):
    contour_sum = 0
    ret, frame = cap.read()


    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cropped = frame[300:800, 920:1000]
    cv2.imshow('cropped',cropped)
        
    if bg is None:
        bg = cropped
        #bg = frame

    if active_line is None:
        active_line = cropped.shape[1] - 120
                
                
    # Haal nieuwe plaatje van eerste plaatje af
    subtracted = cv2.subtract(cropped, bg)
    cv2.imshow('subtracted',subtracted)
    # define a threshold, 128 is the middle of black and white in grey scale
    thresh = 50

    # assign blue channel to zeros 0 is black 255 is white
    ret, img_binary = cv2.threshold(subtracted, thresh, 255, 0)
    cv2.imshow('tresh',img_binary)      
    img_height = img_binary.shape[0]
        
    # canny = cv2.Canny(subtracted, 20,40)
    # cv2.imshow('canny', canny)
    # kernel = np.ones((5,5))
    # dilated = cv2.dolate()
         
    key = cv2.waitKey(1)
    if key == ord ('d'):
        break
    if key == ord('p'):
        cv2.waitKey(-1)    


cap.release()
cv2.waitKey(0)

cv2.destroyAllWindows()