imagepath = 'test_frult1.jpg'
img = cv2.imread(imagepath, 1)
gs_frame = cv2.GaussianBlur(img, (5, 5), 0,0)
#cv2.imshow("gs_frame",gs_frame)
#cv2.imwrite("Tomato_gs_frame.jpg",gs_frame)
hsv = cv2.cvtColor(gs_frame, cv2.COLOR_BGR2HSV)
#cv2.imshow("HSV", hsv)
#cv2.imwrite("Tomato_hsv.jpg", hsv)
erode_hsv = cv2.erode(hsv, None, iterations=2)
inRange_hsv = cv2.inRange(erode_hsv, color_dist[ball_color]['Lower'], color_dist[ball_color]['Upper'])
#cv2.imshow("inRange_hsv",inRange_hsv)
#cv2.imwrite("Tomato_inRange_hsv.jpg", inRange_hsv)
ret, thresh = cv2.threshold(inRange_hsv, 0, 255, cv2.THRESH_BINARY| cv2.THRESH_OTSU)
#cv2.imshow("thresh_1", thresh)
#cv2.imwrite("Tomato_final", img)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5, 5))
first_try = cv2.erode(thresh, kernel, iterations=10)
cv2.imshow("first_try",first_try)
接下來我要介紹我在照片第一階段輸入的時候做的事情,首先呢,你要先利用 cv2.imread 進行讀取你的照片,那你的照片檔名以及格式都要自行輸入,我是都這樣撰寫,可能別人有不同的方式,而進來的資料
這些流程看似複雜,其實都是只用幾個模組組成,但是這些小動作都能理解到不少東西,首先 iterations 這倒是蠻重要的部分,很多參考書或是參考資料幾乎都是固定用法,但是事實上,如果再做運算的時候,這裡是可以做改變來達到你自己的要求,但是大部分不建議改變利用固定的參數是因為他只要有稍微變動,你的圖形跟算法就會差很多,所以一般來說不建議這個東西一直做修改。
像我做番茄的時候,我不利用訓練方式用固定寫法,能辨識出所有番茄都有背景的情況下最多10:7,沒辦法在高,還是會有幾張沒辦法辨識出來,所以這個固定的寫法就是有壞處,沒有經過訓練是非常困難。
那麼這邊就講到這邊,我下一篇會講下半部做了甚麼樣的調整,先謝謝大家觀看,我們下篇見
嘗試,不是一件壞事,被綁在固定的框架中,不是很好的選擇,選擇自己自由的方式,比較重要。