보라색상이 강한 세균 이미지를 보라색 HUE 필터링 후 이로부터 Contour 명령을 사용하여 개개의 세균 이미지를 출력해보자. 아직은 수많은 종류의 세균을 대상으로 하는 imagenet 과 같은 오픈 소스 데이터 베이스가 없으므로 HUE 필터링과 같은 기법 사용이 필요해 보인다.
라즈베리 파이나 Jetson Nano 에서도 실행이 가능한 현재의 코드는 속도가 보다 빠른 윈도우즈 PC 의 아나콘다에서 실행하였다. 사용하는 프론트 엔드에서 imutils 가 설치되었늦ㄴ지 주의해야 할 필요가 있다.
cv2.VideoCapture(0) 명령은 PC에 설치되어 있는 웹캠을 지정한다. 하지만 이 보라색 필터링 코드에서는 동영상 대신 cv2.imread 명령에 의해 현재의 코드와 동일한 폴더 내에 저장되어 있는 사진 이미지를 불러와 필터링 처리함에 유의하자.
보라색 HUE 필터의 범위를 잘 조정해야 적절한 보라색 마스크를 얻을 수 있다.
Contour를 찾아내기 위해서는 흑백 threshold 레벨 처리된 이미지를 준비해야 하나 여기서는 흑백 처리된 보라색 필터링 된 결과로 대체하였으며 별 문제 없이 코드가 실행되었다. cv2.CHAIN_APPROX_SIMPLE 은 찾은 Contour 의 시작점과 끝나는 점을 포함하는 최소한도 수의 좌표만 저장하지만 cv2.CHAIN_APPROX_NONE은 모든 좌표 값을 다 저장하게 된다.
virus.png
#contour_purple_detect.py
import time
import cv2
import sys
import numpy as np
import imutils
# initialize the camera and grab a reference to the raw camera capture
camera = cv2.VideoCapture(0)
time.sleep(0.1)
while True:
image = cv2.imread('virus.png')
#image = cv2.GaussianBlur(image,(11,11), cv2.BORDER_DEFAULT)
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imshow("image", image)
#lower_purple = np.array([100,100,50])
lower_purple = np.array([110,125,150])
#upper_purple = np.array([180,255,240])
upper_purple = np.array([180,200,200])
maskpurple = cv2.inRange(hsv, lower_purple, upper_purple)
#respurple = cv2.bitwise_and(image,image, mask= maskpurple)
cv2.imshow('maskpurple', maskpurple)
#cv2.imshow('respurple',respurple)
#find contours (i.e., outlines) of the foreground objects in the
# thresholded image
cnts = cv2.findContours(maskpurple, cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_NONE)
cnts = imutils.grab_contours(cnts)
output = image.copy()
# loop over the contours
for c in cnts:
cv2.drawContours(output, [c], -1, (240, 0, 159), 2)
cv2.imshow("Contours", output)
# show the frame
key = cv2.waitKey(1) & 0xFF
# clear the stream in preparation for the next frame
# if the `q` key was pressed, break from the loop
if key == ord("q"):
break
cv2.destroyAllWindows()
'Opencv' 카테고리의 다른 글
Remake: HTML 계산기+ 시계 + OpenCV 웹캠 Flask 웹서버 (0) | 2022.06.11 |
---|---|
라즈베리 파이 B/B+에 파이 카메라와 Stretch 버전에 Opencv3.3을 설치해 보자. (0) | 2021.07.11 |
Flask Opencv 웹캠에 의한 웹서버상에서 안면인식 (0) | 2020.05.02 |
아나콘다 OpenCV 웹캠에 의한 얼굴인식 (0) | 2020.05.02 |
3-17 라즈베리 파이 HTML 계산기+ 시계 + Opencv 웹캠 Flask 웹서버 (0) | 2020.05.01 |