|
Post by account_disabled on Jan 6, 2024 0:32:39 GMT -5
并返回其代码。因此,当我们按下时,q我们将跳出循环,关闭窗口,应用程序将结束。 如果这一切都有效,我们就通过了后端应用程序中最困难的部分,即让相机正常工作。 过滤相机图像 对于实际的圆检测,我们将使用圆霍夫变换,它是在cv2.HoughCircles()方法中实现的,目前是 OpenCV 中唯一可用的算法。对我们来说重要的是,它需要灰度图像作为输入,并使用内部的Canny 边缘检测器算法来查找图像中的边缘。我们希望能够手动检查算法看到的内容,因此我们将由四张较小的图像组成一张大图像,每张图像应用不同的滤镜。 Canny 边缘检测器是一种算法,通常在四个方向(垂直、水平和两个对角线)处理图像并查找边缘。该算法执行的实际步骤在 Wikipedia 上有更。 详细的解释,或者在 OpenCV 文档中进行了简要解释。 与模式匹配相反,该算法检测圆形形状,因此我们可以使用我们必须手上的任何圆形物体。我将使用速溶咖啡罐的盖子,然后使用橙色咖啡杯。 我们不需要使用全尺寸图像(当然取决于您的相机分辨率),因此我们将相应 Whatsapp 号码列表 地将它们调整capture.read()为cv2.imshow640px 宽度和高度,以保持宽高比: 复制 然后我们想将其转换为灰度图像,并首先应用中值模糊来消除噪声并保留边缘,然后应用 Canny 边缘检测器来查看圆检测算法将如何工作。因此,我们将使用所有四个预览来组成 2x2 网格。带预览的网格。左上:原始网络摄像头数据;右上:中值模糊后的灰度;左下角:灰度和 Canny 边缘;右下:中值模糊和 Canny 边缘后的灰度。 尽管 Canny 边缘检。 测器使用高斯模糊来减少噪声,但根据我的经验,使用中值模糊仍然值得。您可以比较底部的两个图像。左边的只是 Canny 边缘检测,没有任何其他过滤器。第二张图像也是 Canny 边缘检测,但这次是在应用中值模糊之后。它减少了背景中的物体,这将有助于圆圈检测。 使用霍夫梯度检测圆 在内部,OpenCV 使用一种更高效的霍夫圆变换实现,称为霍夫梯度方法,该方法使用来自 Canny 边缘检测器的边缘信息。维基百科上的正如您在该动画中看到的那样,它根本找不到任何圆圈。我的内置相机只有 15 fps,当我快速移动手时,图像会变得模糊,因此即使在应用滤镜后也找不到圆形边缘。 在本文的最后,我们将回到这个问题并讨论很多关于特定于相机的设置和检测算法的选择,但我们已经可以说,即使。
|
|