import numpy as np
import cv2
img = cv2.imread('e05.jpg')
gray = cv2.imread('e05.jpg',0)
ret,thresh = cv2.threshold(gray,127,255,1)
contours,h = cv2.findContours(thresh,1,2)
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
print len(approx)
if len(approx)==5:
print "pentagon"
cv2.drawContours(img,[cnt],0,255,-1)
elif len(approx)==3:
print "triangle"
cv2.drawContours(img,[cnt],0,(0,255,0),-1)
elif len(approx)==4:
print "square"
cv2.drawContours(img,[cnt],0,(0,0,255),-1)
elif len(approx) == 9:
print "half-circle"
cv2.drawContours(img,[cnt],0,(255,255,0),-1)
elif len(approx) > 15:
print "circle"
cv2.drawContours(img,[cnt],0,(0,255,255),-1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
ผมเขียนโค้ดไปแบบนี้ครับ เพื่ออ่านค่าของรูปแล้วบอกว่ามันคือ สี่เหลี่ยม สามเหลี่ยม หรือ วงกลม
แต่ผมใส่รูปไหนมันก็ contours นับออกมาได้ 4 เลยได้เป็น square ออกมาหมดเลย
ตัวอย่างรูปครับ
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15554991_1392831507396779_609164138_n.jpg?oh=000149c8299a032e60661a20e5754fbe&oe=585341FD
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15423549_1392831440730119_395920135_n.jpg?oh=b073a2842578478e36e15339ce3614b4&oe=58542F41
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15555744_1392949840718279_1807564224_n.jpg?oh=e274bb68c0301dfd38aaf6179fafc5fa&oe=58533774
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15494126_1392949874051609_728501848_n.jpg?oh=1fb26614fc1de26966861785b6cd391b&oe=5854638E
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15424506_1392949910718272_75447510_n.jpg?oh=4dec6dc8f8ba04d2c26984922ea0a435&oe=58543229
ช่วยด้วยครับ python เรื่องการเขียนโปรแกรม
import cv2
img = cv2.imread('e05.jpg')
gray = cv2.imread('e05.jpg',0)
ret,thresh = cv2.threshold(gray,127,255,1)
contours,h = cv2.findContours(thresh,1,2)
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
print len(approx)
if len(approx)==5:
print "pentagon"
cv2.drawContours(img,[cnt],0,255,-1)
elif len(approx)==3:
print "triangle"
cv2.drawContours(img,[cnt],0,(0,255,0),-1)
elif len(approx)==4:
print "square"
cv2.drawContours(img,[cnt],0,(0,0,255),-1)
elif len(approx) == 9:
print "half-circle"
cv2.drawContours(img,[cnt],0,(255,255,0),-1)
elif len(approx) > 15:
print "circle"
cv2.drawContours(img,[cnt],0,(0,255,255),-1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
ผมเขียนโค้ดไปแบบนี้ครับ เพื่ออ่านค่าของรูปแล้วบอกว่ามันคือ สี่เหลี่ยม สามเหลี่ยม หรือ วงกลม
แต่ผมใส่รูปไหนมันก็ contours นับออกมาได้ 4 เลยได้เป็น square ออกมาหมดเลย
ตัวอย่างรูปครับ
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15554991_1392831507396779_609164138_n.jpg?oh=000149c8299a032e60661a20e5754fbe&oe=585341FD
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15423549_1392831440730119_395920135_n.jpg?oh=b073a2842578478e36e15339ce3614b4&oe=58542F41
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15555744_1392949840718279_1807564224_n.jpg?oh=e274bb68c0301dfd38aaf6179fafc5fa&oe=58533774
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15494126_1392949874051609_728501848_n.jpg?oh=1fb26614fc1de26966861785b6cd391b&oe=5854638E
https://scontent.fbkk5-5.fna.fbcdn.net/v/t34.0-12/15424506_1392949910718272_75447510_n.jpg?oh=4dec6dc8f8ba04d2c26984922ea0a435&oe=58543229