当我使用scikit框架时,我有一个执行缓慢的Imshow,这是因为下面的代码吗
while True:
ret, frame = offlinevid.read()
frame = cv2.resize(frame, size, interpolation = cv2.INTER_AREA)
# Test Processing
imgforprocessing = img_as_float(frame)
sigma_est = np.mean(estimate_sigma(imgforprocessing, multichannel = True))
nlm = denoise_nl_means(imgforprocessing, h = 1.5*sigma_est, fast_mode=True, patch_size = 5, patch_distance= 3, multichannel = True)
#cv2.imshow("Test", nlm)
cv2.imshow("Test", frame)
我想像普通的30fps视频一样播放,但当我加入去噪的意思时,它只是下降到每秒5帧。我怎样才能改进它
编辑:我应该提供更多信息。当我移除去噪nl_意味着,视频播放帧速率恢复正常。我想使用去噪,因为我正在处理有很多噪声的显微图像。是否有一个OpenCV函数可以让我像去噪一样去做
我尝试过变形脊线检测
ridge_filter = cv2.ximgproc.RidgeDetectionFilter_create(cv2.CV_32FC1, 1, 1 , 3, cv2.CV_8UC1, 1, 0 , cv2.BORDER_DEFAULT)
ridges = ridge_filter.getRidgeFilteredImage(frame)
blank_mask = np.zeros(frame.shape, dtype=np.uint8)
thresh = cv2.threshold(ridges, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)
inverse = 255 - opening
inverse = cv2.merge([inverse,inverse,inverse])
removed_artifacts = cv2.bitwise_and(frame,frame,mask=opening)
去除的_伪影仍然有来自显微图像的噪声。 这只是一个例子Image 结果非常嘈杂。有没有关于如何移除它们的建议
当面临性能问题时,首先要做的是测量发生了什么,以便明智地将时间花在优化关键部件上。不管我回答的其余部分如何,请测量捕获时间和处理时间。您可以通过注释处理来测量捕获时间。您可以通过注释捕获并重复处理静态的代表性帧来测量处理时间
如果您的代码以每秒30帧的速度运行而不进行处理,我们可以推断采集可能需要33毫秒——尽管您应该对其进行测量
如果代码以5fps的速度运行并进行处理,这意味着每帧200ms,因此我们可以推断处理需要167ms,即200ms-33ms
因此,您的最佳选择是:
进一步,你应该考虑提供一个强的实际的图像,而不是你的组合结果的屏幕抓取,这样人们就可以在代表性数据上运行测试,甚至知道你的图像的大小。处理数据的实际图像也有助于评估降噪性能。如果您包含
import
语句,以便人们知道您使用的是哪些模块,那么它也会更好相关问题 更多 >
编程相关推荐