可以,但是我的轮廓颜色是黑色。如何将其更改为红色或绿色?

    import numpy as np
    import cv2
    from matplotlib import pyplot as plt
    img = cv2.imread('1.jpg',0)
    img1 = cv2.imread('5.jpg',0)
    dest = cv2.subtract(img, img1)
    res = cv2.bitwise_not(dest)
    ret , threshold = cv2.threshold(res,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    cv2.namedWindow('thresimage', cv2.WINDOW_NORMAL)
    cv2.imshow('thresimage',threshold)
    _, contours, hierarchy = cv2.findContours(threshold,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    print "Number of contours detected %d -> "%len(contours)
    cv2.drawContours(threshold,contours,-1,(0,255,0),3)
    cv2.namedWindow('contour', cv2.WINDOW_NORMAL)
    cv2.imshow('contour',threshold)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

enter image description here

最佳答案

第一个:

contours, hierarchy = cv2.findContours(threshold,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)[-2:]

第二
ret , threshold = cv2.threshold(res,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# ...
cv2.drawContours(threshold,contours,-1,(0,255,0),3)

您在二进制(0,255,0)图像上绘制彩色threshed,那么它将始终是第一个元素0,即黑色。您应该先将灰色转换为BGR,然后再绘制颜色。
canvas = cv2.cvtColor(threshold, cv2.COLOR_GRAY2BGR)
cv2.drawContours(canvas,contours,-1,(0,255,0),3)

关于python - Python Opencv drawContour错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47855046/

10-12 23:19