Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在OpenCV中裁剪实时视频源_Python_Opencv_Opencv3.0_Opencv3.1 - Fatal编程技术网

Python 在OpenCV中裁剪实时视频源

Python 在OpenCV中裁剪实时视频源,python,opencv,opencv3.0,opencv3.1,Python,Opencv,Opencv3.0,Opencv3.1,我有一个实时视频提要,跟踪绿色对象并在对象区域上绘制一个矩形。我很好奇如何才能裁剪出只显示矩形所包含区域的提要 以下是相关部分: while True: (success, frame) = webcam.read() frame = imutils.resize(frame, width = 1000) hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv, greenLo

我有一个实时视频提要,跟踪绿色对象并在对象区域上绘制一个矩形。我很好奇如何才能裁剪出只显示矩形所包含区域的提要

以下是相关部分:

while True: 

    (success, frame) = webcam.read()

    frame = imutils.resize(frame, width = 1000)
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    mask = cv2.inRange(hsv, greenLower, greenUpper)
    mask = cv2.erode(mask, None, iterations=2)
    mask = cv2.dilate(mask, None, iterations=2)

    cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
    center = None

    if len(cnts) > 0:

        c = max(cnts, key=cv2.contourArea)
        ((x, y), radius) = cv2.minEnclosingCircle(c)
        M = cv2.moments(c)
        center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))

    for c in cnts:
        if cv2.contourArea(c) < 500:
            continue

        (x, y, w, h) = cv2.boundingRect(c)
        cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 255, 0), 2)

    pts = deque(maxlen = 32)
    pts.appendleft(center)

    for i in xrange(1, len(pts)):

        if pts[i - 1] is None or pts[i] is None:
            continue

        thickness = int(np.sqrt(args["buffer"] / float(i + 1)) * 2.5)
        cv2.line(frame, pts[i - 1], pts[i], (0, 255, 0), thickness)

    cv2.imshow("Presentation Tracker", frame)
为True时:
(成功,帧)=网络摄像头。读取()
frame=imutils.resize(frame,width=1000)
hsv=cv2.CVT颜色(帧,cv2.COLOR_BGR2HSV)
遮罩=cv2.inRange(hsv、绿下、绿上)
掩模=cv2。腐蚀(掩模,无,迭代次数=2)
掩码=cv2。放大(掩码,无,迭代次数=2)
cnts=cv2.findContentours(mask.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2]
中心=无
如果len(cnts)>0:
c=最大值(CNT,键=cv2.轮廓面积)
((x,y),半径)=cv2.闭合圆(c)
M=cv2.力矩(c)
中心=(整数(M[“m10”]/M[“m00”]),整数(M[“m01”]/M[“m00”]))
对于碳纳米管中的碳:
如果cv2.轮廓面积(c)<500:
持续
(x,y,w,h)=cv2.boundingRect(c)
cv2.矩形(框架,(x,y),(x+w,y+h),(0,255,0),2)
pts=deque(最大值=32)
左(中)点附件
对于x范围内的i(1,len(pts)):
如果pts[i-1]为无或pts[i]为无:
持续
厚度=int(np.sqrt(args[“buffer”]/float(i+1))*2.5)
cv2.线(帧,pts[i-1],pts[i],(0,255,0),厚度)
cv2.imshow(“演示跟踪器”,框架)

您可能希望使用OpenCV Python创建一个“感兴趣区域(ROI)”

您可以在代码中执行此操作,如下所示:

(x, y, w, h) = cv2.boundingRect(c)
cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 255, 0), 2)
roi = frame[y:y+h, x:x+w]
请注意,(x,y)对应于矩形的左上角点。 上面声明的rect内部区域已存储在Mat roi中