可以,但是我的轮廓颜色是黑色。如何将其更改为红色或绿色?
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/