imshow后保存的png图像与视频捕获帧中的png图像之间的区别

问题描述 投票:0回答:1

我正在尝试从 USB 相机图像中检测黄色。我正在使用黄色蒙版来过滤对象并在找到的轮廓周围绘制矩形。 如果我保存从 USB 摄像头获得的帧,然后应用边缘检测。它工作正常。 但是当我直接对视频捕获获得的帧应用边缘检测时,我没有得到好的结果。我得到了许多小轮廓。 谁能指出错误吗?

当我读取保存为 png 的相机帧时,下面提供的代码给出了良好的结果。



    # Convert the image to HSV color space
    image=cv2.imread('/content/drive/MyDrive/droplets.png')
hsv = cv2.cvtColor(Frame, cv2.COLOR_RGB2HSV)

    # Define the range of yellow color in HSV
lower_yellow =  np.array([0,38, 57], dtype="uint8")
upper_yellow = np.array([70, 255, 255], dtype="uint8")
    # Threshold the image to get only yellow colors
mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
    #cv2.imshow('orginal',mask)

    # Find contours in the binary image
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)


for c in contours:
       
        QttyOfContours = QttyOfContours+1
        #print('Number_of_contours',QttyOfContours)
        #draw an rectangle "around" the object
        (x, y, w, h) = cv2.boundingRect(c)
        cv2.rectangle(Frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

        #find object's centroid
        CoordXCentroid = (x+x+w)/2
        CoordYCentroid = (y+y+h)/2

        ObjectCentroid = (CoordXCentroid,CoordYCentroid)
        #print(CoordXCentroid,CoordYCentroid)
        cv2.circle(Frame,(int(CoordXCentroid),int(CoordYCentroid)), 1, (0, 0, 0), 5)
        cv2.drawContours(Frame, contours, -1, (0, 255, 0), 2)

#cv2.startWindowThread()
cv2_imshow(Frame)
cv2.waitKey(100);


相同的代码在我使用时给出了不好的结果

Cap=cv2.Videocapture(1,cv2.CAP_DSHOW)
ret,frame=cap_read()

python camera usb edge-detection
1个回答
0
投票

我认为您的代码中没有错误。问题在于进入算法的数据 - MPEG 视频捕获帧有些噪音。

视频捕获帧可能默认为有损 MPEG 编码,因此捕获的视频帧将具有 JPG 伪像,这些伪像在包含锐边过渡的 8x8 块中看起来很像烟雾。

量化误差使得 JPEG 图像中锐利边缘附近的高频噪声相当严重。人眼根本看不到它,但边缘检测算法可以!

为了使其在应用阈值和边缘检测时表现更好,您的选项是:

  1. 如果可以的话,将相机设置为捕获未压缩或无损压缩的视频图像(没有什么比拥有良好的原始数据更好的了)。
  2. 仍然使用简单内核(例如 1/4 1/2 1/4)垂直和水平对 JPEG 捕获进行低通滤波。

您可能需要尝试找到一种折衷的 LP 滤波器,该滤波器仍然允许良好的边缘检测,同时充分抑制 JPEG 伪影。您可能需要使用具有 5 项的内核才能充分抑制噪声。不过,应用于水平和垂直方向的一维内核应该足够好(并且相对较快)。

© www.soinside.com 2019 - 2024. All rights reserved.