我正在尝试使用opencv在1080p相机上拍摄照片,但是,只希望照片为224x224像素。我如何使用opencv做到这一点。

我目前有以下代码:

Import cv2
Cap = cv2.VideoCam(0)
Cap.set(3, 224)
Cap.set(4, 224)

Ret, frame = cap.read()

但是,当我查看框架的形状时,它不是(224,224,3)。有人可以帮我弄清楚如何使其输出我想要的像素尺寸

最佳答案

当您说想要224x224的图片时,这取决于您的意思。如果我们以1920x1080的图片开始,则可能需要:

  • (A)-左上角,以洋红色
  • 突出显示
  • (B)-中心224x224像素,以蓝色
  • 突出显示
  • (C)-最大的正方形,尺寸缩小为224x224,以红色
  • 突出显示
  • (D)-整个图像失真以适合224x224

  • python - 在opencv中具有特定像素高度和宽度的视频-LMLPHP

    因此,在下面的假设中,您已经使用类似的方法将摄像机的帧读取到名为im的变量中:
    ...
    ...
    ret, im = cap.read()
    

    如果要(A),请使用:
    # If you want the top-left corner
    good = im[:224, :224]
    

    python - 在opencv中具有特定像素高度和宽度的视频-LMLPHP

    如果要(B),请使用:
    # If you want the centre
    x = h//2 - 112
    y = w//2 - 112
    good = im[x:x+224, y:y+224]
    

    python - 在opencv中具有特定像素高度和宽度的视频-LMLPHP

    如果要(C),请使用:
    # If you want the largest square, scaled down to 224x224
    y = (w-h)//2
    good = im[:, y:y+h]
    good = cv2.resize(good,(224,224))
    

    python - 在opencv中具有特定像素高度和宽度的视频-LMLPHP

    如果需要(D),请使用:
    # If you want the entire frame distorted to fit 224x224
    good = cv2.resize(im,(224,224))
    

    python - 在opencv中具有特定像素高度和宽度的视频-LMLPHP

    关键字:图像处理,视频,1920x1080、1080p,裁剪,扭曲,最大正方形,中央部分。左上角,Python,OpenCV,框架,提取。

    关于python - 在opencv中具有特定像素高度和宽度的视频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59419664/

    10-12 14:26