代码之家  ›  专栏  ›  技术社区  ›  YEEN

在OpenCV中旋转屏幕时,屏幕看起来像是向左上推的

  •  0
  • YEEN  · 技术社区  · 6 年前

    窗户的右边和底部有大约3厘米的空间。看起来屏幕被推开了。我将屏幕旋转到参考位置 this page .

    这是一张照片

    import cv2 
    
    cap = cv2.VideoCapture(0) #return 0 or -1
    while cap.isOpened():
        ret, img = cap.read()
        h,w = img.shape[:2]
        center =  (w/2, h/2)
        M = cv2.getRotationMatrix2D(center, 90, 1)
        img = cv2.warpAffine(img, M, (h, w)) 
        #flip the image vertically
        img = cv2.flip(img, 1)
    
    
        if cv2.waitKey(1)&0xFF == ord('q'): 
            break 
        if not ret: 
            print('no camera connected!') 
    
        cv2.imshow('camera-0', img)
    cap.release()
    cv2.destroyAllWindows()
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Jeru Luke    6 年前

    问题就在这条线上 img = cv2.warpAffine(img, M, (h, w)) 哪里 h w 必须互换。

    功能 cv2.warpAffine() 使用旋转矩阵创建新图像 M .但是自从 W H 已被互换,生成的帧似乎已被平移,从而生成黑色区域。

    将上面的行替换为 img = cv2.warpAffine(img, M, (w, h))

    该代码的结果输出将导致截取相反的两端。要知道如何正确旋转图像(不剪切边缘),请 必须 再见 THIS BLOG