I know it's important to apply Gaussian blur to an image before using Canny to detect edges. My question is: does cv2.Canny() do Gaussian blur on its own or it is necessary to apply cv2.GaussianBlur() before cv2.Canny()? The documentation isn't clear on this point.