我有一張帶面具的圖片;我在影像中找到了物體的輪廓。出于某種原因,當我呼叫 時cv2.drawContours(),物件的輪廓以灰色繪制。有沒有辦法在影像上繪制彩色線條?
下面是代碼:
img = cv2.imread("Assets/Setup2.jpg")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
masked_img = cv2.inRange(hsv_img, (50, 40, 40), (70, 255, 255))
contours = cv2.findContours(masked_img, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
cv2.drawContours(masked_img, contours, -1, (60, 200, 200), 5)
cv2.imshow("Frame", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
uj5u.com熱心網友回復:
輪廓以灰色繪制,因為輸入影像 masked_img 是單通道影像。cv2.threshold 或 cv2.inRange 的輸出回傳單通道影像,無論其輸入如何。
以下是您應該如何修復代碼以獲得所需的效果:
img = cv2.imread("Assets/Setup2.jpg")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
masked_img = cv2.inRange(hsv_img, (50, 40, 40), (70, 255, 255))
masked_img = cv2.cvtColor(masked_img, cv2.COLOR_GRAY2BGR) // changes gray to BGR
contours = cv2.findContours(masked_img, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
cv2.drawContours(masked_img, contours, -1, (60, 200, 200), 5)
cv2.imshow("Frame", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
或者您可以直接在輸入影像上繪制輪廓。在這種情況下,您只需將 cv2.drawContour 更改為以下代碼
cv2.drawContours(img, contours, -1, (60, 200, 200), 5)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/471829.html
