我有一个盒子,从前面透明,我将相机放在前面的透明面板上捕捉内部的图像,大多数时候盒子是空的,但是假设有人在这个盒子里面放了一个物体,那么我必须只从捕获的图像中提取此对象.
(我的真正目的是识别放置在盒子内的物体,但第一步是提取物体,然后提取特征以生成训练模型,现在我只专注于从图像中提取物体)
我是OpenCV的新手,并且在Python中使用它,我找到了一些可以帮助我的OpenCV函数.
背景减法的代码如下,即使短距离也不能正常工作
cap = cv2.VideoCapture(0)
fgbg = cv2.createBackgroundSubtractorMOG2()
fgbg2 = cv2.createBackgroundSubtractorKNN()
while True:
ret, frame = cap.read()
cv2.namedWindow('Real', cv2.WINDOW_NORMAL)
cv2.namedWindow('MOG2', cv2.WINDOW_NORMAL)
cv2.namedWindow('KNN', cv2.WINDOW_NORMAL)
cv2.namedWindow('MOG2_ERODE', cv2.WINDOW_NORMAL)
cv2.namedWindow('KNN_ERODE', cv2.WINDOW_NORMAL)
cv2.imshow('Real', frame)
fgmask = fgbg.apply(frame)
fgmask2 = fgbg2.apply(frame)
kernel = np.ones((3,3), np.uint8)
fgmask_erode = cv2.erode(fgmask,kernel,iterations = 1)
fgmask2_erode = cv2.erode(fgmask2,kernel,iterations = 1)
cv2.imshow('MOG2',fgmask)
cv2.imshow('KNN',fgmask2)
cv2.imshow('MOG2_ERODE',fgmask_erode)
cv2.imshow('KNN_ERODE',fgmask2_erode)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
任何人都可以请帮助这个主题,以及如何修改上面的代码只是使用这两个图像,当我尝试我得到空白图像.提前致谢
来自相机的样本图像如下:(我使用800万像素相机,这就是为什么图像尺寸很大,我减小了尺寸,然后在这里上传)
我正在执行一项任务,我需要计算每天花费的时间,然后使用条形图表示该时间,因此对于此任务,我使用python并能够获取每天花费的时间,并将其存储在列表中“ time_list”,现在我不明白如何使用matplotlib函数进行绘制。问题在于,此列表包含datetime.timedelta类值。例:
time_list
[datetime.timedelta(0, 23820), datetime.timedelta(0, 27480), datetime.timedelta(0, 28500), datetime.timedelta(0, 24180), datetime.timedelta(0, 27540), datetime.timedelta(0, 28920), datetime.timedelta(0, 28800), datetime.timedelta(0, 29100), datetime.timedelta(0, 29100), datetime.timedelta(0, 24480), datetime.timedelta(0, 27000)]
Run Code Online (Sandbox Code Playgroud)
这些值的含义如下:
Total Time Spent on 2 is 6:37:00
Total Time Spent on 3 is 7:38:00
Total Time Spent on 4 is 7:55:00
Total Time Spent on 5 is 6:43:00
Total Time Spent on 8 is 7:39:00
Total Time Spent on 9 is 8:02:00
Total Time Spent on 10 is 8:00:00
Total Time Spent on 11 …Run Code Online (Sandbox Code Playgroud)