• 【OpenCV基础知识点总结】


    OpenCV(开源计算机视觉库)是一个广泛应用于图像和视频处理的Python库。以下是一些主要的图像处理知识点汇总和相应的代码示例说明:

    1. 图像读取与显示

    • 读取图像:使用cv2.imread()函数从文件中加载图像。

      import cv2
      
      # 读取图像
      img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)  # IMREAD_COLOR表示以BGR格式读取,还有IMREAD_GRAYSCALE等选项
      
      if img is not None:  # 检查是否成功读取图像
          # 显示图像
          cv2.imshow('Image', img)
          cv2.waitKey(0)  # 等待用户按键关闭窗口
          cv2.destroyAllWindows()  # 关闭所有窗口
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

    2. 图像写入

    • 保存图像:使用cv2.imwrite()函数将图像矩阵保存到磁盘。

      cv2.imwrite('output.jpg', img)  # 将img矩阵内容保存为'output.jpg'
      
      • 1

    3. 图像基本操作

    • 裁剪图像:通过numpy切片操作或cv2.resize()函数裁剪图像的一部分。

      cropped_img = img[50:200, 100:300]  # 切片裁剪
      
      • 1
    • 调整图像大小

      resized_img = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)
      
      • 1

    4. 颜色空间转换

    • 灰度图像转换

      gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
      
      • 1
    • RGB转BGR 或其他颜色空间转换。

    5. 图像滤波器

    • 均值滤波:减少图像噪声。

      blurred_img = cv2.blur(img, (5, 5))  # 使用5x5大小的核进行模糊
      
      • 1
    • 高斯滤波

      gaussian_blurred_img = cv2.GaussianBlur(img, (5, 5), 0)
      
      • 1

    6. 边缘检测

    • Canny边缘检测

      edges = cv2.Canny(img, threshold1, threshold2)
      
      • 1

    7. 形态学操作

    • 膨胀与腐蚀

      kernel = np.ones((3, 3), np.uint8)
      dilated_img = cv2.dilate(img, kernel, iterations=1)
      eroded_img = cv2.erode(img, kernel, iterations=1)
      
      • 1
      • 2
      • 3

    8. 直方图均衡化

    • 改善图像对比度

      equalized_img = cv2.equalizeHist(gray_img)
      
      • 1

    9. 对象检测

    • 霍夫直线检测

      lines = cv2.HoughLines(img, rho, theta, threshold)
      
      • 1
    • 轮廓查找

      contours, hierarchy = cv2.findContours(thresh_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
      
      • 1

    10. 视频处理

    • 打开摄像头并读取视频流

      cap = cv2.VideoCapture(0)  # 打开默认摄像头
      while True:
          ret, frame = cap.read()
          if ret:
              # 对frame进行处理...
              cv2.imshow('Video', frame)
              if cv2.waitKey(1) & 0xFF == ord('q'):
                  break
      cap.release()
      cv2.destroyAllWindows()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
  • 相关阅读:
    ctrlz删除的文件怎么恢复?
    C++智能指针
    【算法小课堂】二分查找算法
    二分图及其多个扩展用法详解及其证明 + 模板题: 关押罪犯 棋盘覆盖
    java面试之ThreadLocal问题
    口袋参谋:如何快速下载直通车图,这个方法你用过吗?
    计算机毕业设计(附源码)python玉米生产力管理与分析平台
    企业管理低代码—无代码平台的7个技巧
    创建谷歌账号 绕过手机验证(2023.11亲测有效)
    Solidity智能合约开发 — 3.5-库合约
  • 原文地址:https://blog.csdn.net/weixin_51154380/article/details/136433731