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

在视频中显示帧的裁剪部分:错误(-215)大小。宽度>0和大小(&S)。函数cv::imshow中的高度>0

  •  1
  • Laveena  · 技术社区  · 8 年前

    如果这是一个多余的问题,请原谅,但我引用了与上述错误相关的所有可能的解决方案,但都没有帮助我解决问题。

    我正在编写下面的代码,以便在不同的窗口中分别显示视频(mag,ang)的裁剪部分(roi\u 1),但我在尝试显示裁剪部分(roi\u 1)的代码中遇到以下错误。我真的很乐意在这个问题上得到任何帮助

    在下面,您将看到一些注释,说明引发此错误的代码部分

    Traceback (most recent call last): File "D:/Code/Python/franeback.py", line 35, in <module>
        cv2.imshow('ROI', roi_1)
        cv2.error: D:\Build\OpenCV\opencv-3.2.0\modules\highgui\src\window.cpp:‌​312: 
            error: (-215) size.width>0 && size.height>0 in function cv::imshow
    

    import cv2
    import numpy as np
    
    cap =  cv2.VideoCapture('D:\\test2.MP4')
    ret, frame1 = cap.read()
    prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
    hsv = np.zeros_like(frame1)
    hsv[...,1] = 255
    
    while(1):
        ret, frame2 = cap.read()
        next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
        flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
    
        mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
        hsv[...,0] = ang*180/np.pi/2
        hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
        cv2.rectangle(mag, (200, 220), (350, 350), (255, 255, 0), 2)
        cv2.rectangle(mag, (400, 520), (600, 600), (255, 255, 0), 2)
        roi_1= mag[200:220, 350:350]
        cv2.imshow('frame2',mag)
        k = cv2.waitKey(30) & 0xff
        if k == 27:
            break
        cv2.rectangle(ang, (200, 220), (350, 350), (0, 255, 0), 2)
        cv2.rectangle(ang, (400, 520), (600, 600), (0, 255, 0), 2)
        cv2.imshow('frame1', ang)
        r = cv2.waitKey(30) & 0xff
        if r == 27:
            break
    
    # Part throwing error starts
        cv2.imshow('ROI', roi_1)
        s = cv2.waitKey(30) & 0xff
        if s == 27:
            break
    #Part throwing error ends
    
        prvs = next
        cap.release()
        cv2.destroyAllWindows()
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Dan MaÅ¡ek    8 年前

    知道了!

    专注于我的追踪,你看 error: (-215) size.width>0 && size.height>0 in function cv::imshow

    这表明问题在于我如何创建 roi_1 -- roi_1= mag[200:220, 350:350] . 第二个索引的范围长度为0(所有内容均为>=350和<350),不应为0。

    我把它改成 roi_1= mag[200:220, 350:370] 我不再犯同样的错误了。