오늘, 우리는 다음과 같이 우리는, 빨간색과 녹색 구형 물체를 감지, 세 가지 기본 컬러 비디오 객체를 객체 인스턴스의 작은 색상의 실시간 감지를 달성하기 위해 비디오를했다가 :
비디오 (또는 카메라)를 개방 할 필요가 첫 번째 단계 :
캡 = cv2.VideoCapture ( '1.mp4') #은 비디오 파일 열기 # 캡 = cv2.VideoCapture (0) # 개방 USB 카메라
사이클은 프레임, 색 물체 검출을 할 필요가있다. 컬러 필터 문턱 값을 이용하여 물체의 감지 HSV 색이, 한계 값을 키 HSV로 설정되어, 아래의 표 HSV 색은 일반적으로 사용된다 :
그러나 그림은 또한 다음입니다 같은 우리가 HSV 임계 값을 사용하는 빨간색과 녹색 위의 그림에서와 같이 그림의 대상의 작은 HSV 값을 추출하는 자신의 포획을 쓸 수있는 특정 도구 및 수동 설정 임계 값을 필요 :
lower_green = np.array ([35, 110 , 106]) # 녹색 범위의 낮은 임계 값 = np.array upper_green가 ([77, 255 , 255]) # 높은 임계 녹색 범위 lower_red = np.array ([0, 127 , 128 ]) # 적색 범위 낮은 임계치 upper_red np.array = ([10, 255 , 255]) # 높은 임계 범위 적색
다음 단계는 필터링 처리, 윤곽 추출하고 컬러 putText 함수로 표시하면서 최종 결과는, 직사각형의 상자 객체 검출을 나타내는 표시되고, 전체 코드 및 최종 결과는 다음이다 :
전체 코드 :
# - * - 코딩 : cp936 - * - 오기 NumPy와 AS NP 오기 CV2가 폰트 = cv2.FONT_HERSHEY_SIMPLEX lower_green np.array = ([35, 110, 106]) # 녹색 범위의 낮은 임계 값 = np.array (upper_green [77, (255) 높은 임계 255]) # 녹색 범위 lower_red = np.array ([0, 127 , 128]) # 적색 범위 낮은 임계치 upper_red = np.array ([10, 255 , 255]) # 높은 임계 적색 범위 캡 = CV2 .VideoCapture가 ( '1.mp4') # 비디오 파일 열기 # 캡 = cv2.VideoCapture (0) # 개방 USB 카메라 (cap.isOpened는 ()) 경우 : # 비디오 공개에 성공 .에서 플래그 1 = 다른 : 에서 플래그 = 0 NUM = 0 IF (인 플래그) 그동안 (참)는 : RET는 프레임 = cap.read ()는 #의 판독 (프레임 없음 없음) IF #을 : IF RET == 거짓 : 판독 프레임 # 실패한 체류 = cv2.cvtColor hsv_img (프레임 cv2.COLOR_BGR2HSV) mask_green = cv2.inRange (hsv_img, lower_green, upper_green) #로부터 선택된 색상에 따라 다양한 천공 mask_red = cv2.inRange (hsv_img, lower_red, upper_red) # 으로부터 선택된 색상에 따라 다양한 천공 mask_green = cv2.medianBlur (mask_green 7) # 메디안 필터 mask_red = cv2.medianBlur (mask_red 7) # 메디안 필터 마스크 = cv2.bitwise_or (mask_green, mask_red) cv2.imshow ( 'mask_green'mask_green) cv2.imshow ( ) 'mask_red'mask_red ( "마스크", 마스크)를 cv2.imshow 윤곽에 대한 CNT : (X, Y, W, H) = cv2.boundingRect (CNT) mask_green, 등고선 cv2.findContours = 계층 (mask_green, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) mask_red, contours2, hierarchy2 = cv2.findContours (mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) cv2.rectangle (프레임 (X, Y), (X + Y + 높이), (0, 255, 255), w, 2) cv2.putText (프레임, "그린"(X, Y - 5), 폰트, 0.7, (0, 255, 0), 2) contours2에 대한 CNT2 : (X2, Y2, W2, H2) = CV2 .boundingRect (CNT2) cv2.rectangle (프레임 (X2, Y2), (X2 + W2, Y2 + H2), (0, 255, 255), 2) cv2.putText (프레임 "빨강", (X2, Y2 - 5), 폰트, 0.7 (0, 0, 255), 2) NUM NUM = + 1 cv2.imshow ( "결과"프레임) cv2.imwrite ( "imgs / %의 d.jpg"%의 NUM 프레임 ) cv2.waitKey (20) == 0xFF의 경우 27 :출구에 # Esc 키를 눌러 중단 cv2.waitKey (0) cv2.destroyAllWindows ()
순 효과 애니메이션 :
[OpenCV의 깊이 관심과 학습 AI] 학습에 대한 자세한 내용은
길게 눌러 또는 따라 다음 QR 코드를 스캔