李寻欢a 2023-08-28 11:26 采纳率: 0%
浏览 50
已结题

opencv 图像处理

如图所示 用opencv 进行图像处理 来实现缺陷检测 这个背景蛮复杂的 希望各位能有一个好的解决方案
这是一个4k的图像试了很多滤波 发现噪声还是很多

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-08-28 11:56
    关注

    引用 皆我百晓生 小程序回复内容作答:

    对于图像处理和缺陷检测任务,OpenCV是一个非常有用的库。下面是一个简单的示例代码,演示了如何使用OpenCV进行图像处理和缺陷检测。

    import cv2
    import numpy as np
    
    # 读取图像
    image = cv2.imread('image.jpg')
    
    # 转换为灰度图像
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # 进行高斯模糊
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    
    # 应用Canny边缘检测
    edges = cv2.Canny(blurred, 50, 150)
    
    # 执行形态学操作(例如闭运算)以消除噪声
    kernel = np.ones((3, 3), np.uint8)
    closed = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel)
    
    # 寻找轮廓
    contours, _ = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    # 遍历轮廓并绘制边界框以进行缺陷检测
    for contour in contours:
        # 计算边界框
        (x, y, w, h) = cv2.boundingRect(contour)
        
        # 绘制边界框
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
    
    # 显示图像
    cv2.imshow('Image', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    在这个示例中,我们首先读取图像并将其转换为灰度图像。然后,我们应用高斯模糊以减少图像中的噪声,然后使用Canny边缘检测算法提取图像的边缘。接下来,我们执行形态学操作(闭运算)以进一步消除噪声。然后,我们使用findContours函数来寻找图像中的轮廓,并使用矩形边界框将这些轮廓框起来。最后,我们显示带有边界框的图像。

    你可以根据实际需求调整各个步骤的参数,例如调整高斯模糊的内核大小、Canny边缘检测的阈值、形态学操作的内核大小等,以获得更好的图像处理和缺陷检测效果。

    希望这个示例能够帮助到你,如果有任何问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月24日
  • 修改了问题 8月28日
  • 创建了问题 8月28日