0
我正在使用以下代碼來檢測不同顏色的斑點之間的樹皮圓斑點。Python - 查找圖像上不同顏色的輪廓
import numpy as np
import cv2
im = cv2.imread('im.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,200,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(im,contours,-1,(0,0,255),1)
#(B,G,R)
cv2.imshow('image',im)
cv2.waitKey(0)
cv2.destroyAllWindows()
但是我很難爲藍色的斑點畫出不同的彩色輪廓。我嘗試使用多個輪廓:
import numpy as np
import cv2
im = cv2.imread('im.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,200,255,0)
ret, thresh2 = cv2.threshold(imgray,130,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
contours2, hierarchy2 = cv2.findContours(thresh2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(im,contours,-1,(0,0,255),1)
cv2.drawContours(im,contours2,-1,(0,255,0),1)
#(B,G,R)
cv2.imshow('image',im)
cv2.waitKey(0)
cv2.destroyAllWindows()
這種方法的第一個問題是它不能準確地只勾勒出藍色斑點。此外,根據照明等情況,必須根據每個圖像修改threshold
函數中的靈敏度等級。是否有更平滑的方法來執行此操作?
它不會傷害,如果你讀了一些關於彩色圖像處理... – Piglet
我做到了,這就是我得到這個目標的方式。但是,像一些幫助進步的id。 – Jonathan
你有沒有跳過關於色相的部分? :D見headcrabs答案。如果要進行彩色圖像處理,請確保您瞭解RGB,HSV和其他標準色彩空間。 – Piglet