首页 > 解决方案 > 在彩色图像上使用精明

问题描述

我是图像处理和opencv的新手,但最近我正在研究边缘检测的想法,对此我有疑问:

标签: opencvedge-detection

解决方案


如果你接受 python,那么你可以这样做:

对于第二个问题:


    1. 使用分离通道split的方法分离通道,对每个通道Canny应用不同的阈值电平,然后使用merge组合结果的方法。

  • import cv2   
    
    img = cv2.imread("grl.jpg")
    (B, G, R) = cv2.split(img)
    B_cny = cv2.Canny(B, 50, 200)
    G_cny = cv2.Canny(G, 50, 200)
    R_cny = cv2.Canny(R, 50, 200)
    img_cny = cv2.merge([B_cny, G_cny, R_cny]) 
    
  • 结果:


  • 在此处输入图像描述 在此处输入图像描述

  • 可能的问题:为什么split返回BGR

  • 答:opencv以(BGR)格式读取图像,因此split返回(B, G, R)格式

  • 您也可以直接应用于图像(感谢@fmw42):

  • 结果:

  • 在此处输入图像描述

对于第三个问题:


  • 是的,处理灰度图像比彩色图像快得多。

  • 我们看到不同颜色的图像,但计算机看到的是一个值矩阵:

    • 例如:

      • 25 45 67 37 90 ..
        56  .
        46     .     
        34        .
        13           .
        .
        .
        
      • 矩阵中的每个单元格可以在 0-255 之间变化。灰度图像(矩阵)只有 1 个通道,彩色图像有 3 个通道(矩阵)

      • 因此,您可以认为计算单矩阵(灰色)比计算 3 矩阵(图像)要快


推荐阅读