PythonによるRGBカラーブロック分類認識
前に言いたいことがある
後輩に工事の訓練をする時、私が書いた色のブロックの識別コードを手伝って、在庫を整理して発見して、コードの構想はとても普通の処理で、興味があるのも浪費しないでください、構想も計算します.
Show me the code
後輩に工事の訓練をする時、私が書いた色のブロックの識別コードを手伝って、在庫を整理して発見して、コードの構想はとても普通の処理で、興味があるのも浪費しないでください、構想も計算します.
Show me the code
import cv2
import numpy as np
def color_classify(srcImg, threshold):
result = []
# ,
boundaries = [
([0, 43, 46], [10, 255, 255], "Red")
([35, 43, 46], [77, 255, 255], "Green"),
([100, 43, 46], [124, 255, 255], "Blue")
]
hsv_img = cv2.cvtColor(srcImg, cv2.COLOR_BGR2HSV) # change to hsv model
#
for (lower, upper, color) in boundaries:
# NumPy
lower = np.array(lower, dtype="uint8")
upper = np.array(upper, dtype="uint8")
# get mask
mask = cv2.inRange(hsv_img, lower, upper)
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
cv2.imshow('Mask', mask)
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
if len(cnts) > 0:
c = max(cnts, key=cv2.contourArea)
((x, y), radius) = cv2.minEnclosingCircle(c)
if radius > threshold:
print(" :{0} :{1}".format(color, radius) )
result.append(color)
return result
if __name__ == '__main__':
capture = cv2.VideoCapture(0) # 0 , 0
while True:
#
ref, capframe = capture.read()
if ref is True:
#
color_threshold = 150
result = color_classify(capframe, color_threshold)
if len(result) > 0:
print(result)
cv2.putText(capframe, result[0], (20, 60), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 0))
cv2.imshow('frame', capframe)
if cv2.waitKey(15) == 'q':
break
capture.release()
cv2.destroyAllWindows()