我是视频分析中的半菜鸟。 我有一个带有一些彩色水滴的培养皿,我必须检测它们,并记录它们的位置,面积和颜色。
我想首先检测我的培养皿(可能使用HoughCircles)并定义一个后期工作的ROI。
问题是,mi碟检测非常“嘈杂”:程序检测到很多圈子(我只需要一个与碟子相对应的圈子),它永远不会检测到正确的圈子。
这是我的代码:
import cv2
import numpy as np
def main():
cap=cv2.VideoCapture("dropletsS.wmv")
cv2.namedWindow("prova")
while(1):
ret, RGBframe = cap.read()
grayFrame = cv2.cvtColor(RGBframe,cv2.COLOR_BGR2GRAY)
grayFrame=cv2.medianBlur(grayFrame,7)
circles=cv2.HoughCircles(grayFrame,cv2.HOUGH_GRADIENT ,50,50)
for c in circles[0,:]:
cv2.circle(RGBframe,(c[0],c[1]),c[2],(0,255,0),2)
cv2.imshow("prova", RGBframe)
cv2.imshow("grigio", grayFrame)
cv2.waitKey(10)
if __name__ == "__main__":
main()
结果是here。
有人有一些建议吗?关于我以后识别和跟踪飞沫的方式的建议也是受欢迎的。 提前谢谢!
答案 0 :(得分:0)
很难想出一个解决方案而没有太多关于这道菜的实际看法的想法,但我会尝试帮助你。
如果问题出现在我认为的问题上,那么您可以打开并扩大图像以加入所有不连续的斑点。
在应用Hough Transform之前执行以下操作:
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5)) #declare outside while
grayFrame = cv2.morphologyEx(grayFrame, cv2.MORPH_OPEN, kernel)
grayFrame = cv2.dilate(grayFrame, kernel, iterations = 2)
如果输出是您想要的输出图像,请告诉我。还可以使用参数来获得所需的结果。您可以更改MORPH_ELLIPSE的尺寸以及迭代次数。增加它们中的任何一个都会增加膨胀程度,因此更多的斑点会加入,反之亦然。