drawCountour()不工作

2024-09-28 03:17:19 发布

您现在位置:Python中文网/ 问答频道 /正文

drawContour()函数在视频帧中工作不正常。它使用这个stack-overflow answer处理图像。输出的只是一幅不需要绘制任何轮廓的精明图像。你知道吗

这是我的密码:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while True:
    _, frame = cap.read()

    ret,thresh1 = cv2.threshold(frame,127,255,cv2.THRESH_BINARY)
    kernel = np.ones((5,5),np.uint8)
    erosion = cv2.erode(thresh1,kernel,iterations = 1)


    edges = cv2.Canny(erosion, 100 ,200)
    imCopy = edges.copy()

    laplacian = cv2.Laplacian(edges, cv2.CV_8UC1)
    sobely = cv2.Sobel(laplacian,cv2.CV_8UC1, 0, 1, ksize=5)
    im2, contours, hierarchy = cv2.findContours(sobely,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

    frame = cv2.drawContours(im2, contours, -1, (255,0,0), 3)
    cv2.imshow('window',frame)
    print len(contours)

    k = cv2.waitKey(5) & 0xFF
    if k==27:
       break

cv2.destroyAllWindows()
cap.release()

Tags: 图像importnpcv2kernelframecvcap
2条回答

使用

frame = cv2.drawContours(frame, contours, -1, (255,0,0), 3)
cv2.imshow('window',frame)

绘制的轮廓将不着色,因为您正在单通道图像上绘制它们。下面是如何画彩色的。(假设frameBGR。如果原始frame是灰度的,则使用cvtColor将下面代码中的frame_copy转换为BGR)。你知道吗

_, frame = cap.read()
frame_copy = np.copy(frame)
.
.
.
cv2.drawContours(frame_copy, contours, -1, (255,0,0), 3)
cv2.imshow('window',frame_copy)

相关问题 更多 >

    热门问题