Opencv Deep learning 이미지 인식


# readNet(model, config)

# cv2.dnn.readNet


# blobFromImage(image, scalefactor, size, mean, swapRB, crop) -> retval

# blob = cv2.dnn.blobFromImage


# net.setInput(blob)

# prob = net.forward()


########### googLeNet 영상인식

# 입력크기: 224 x 224  (224,224)

# 컬러: BGR

# 밝기평균값: (104, 117, 123)


# filename = ('./googlenet/fig/apple2.png')

filename = ('./googlenet/fig/Cat_November_2010-1a.jpeg')


img_files = glob.glob('./googlenet/fig/*.*')

img_lst = os.listdir('./googlenet/fig')


img_files = []


for i in img_lst:

    img_file = './googlenet/fig/' + i

    img_files.append(img_file)



cv2.namedWindow('img',cv2.WINDOW_NORMAL)


cv2.namedWindow('img',cv2.WINDOW_NORMAL)

cv2.setWindowProperty('img', cv2.WND_PROP_AUTOSIZE,cv2.WINDOW_AUTOSIZE)




img = cv2.imread(filename)

if img is None:

    print('image read failed')

    sys.exit()


#######################################################################################################

## dnn Model

model = './google/bvlc_googlenet.caffemodel'

config = './google/deploy.prototxt.txt'


net = cv2.dnn.readNet(model, config)  # 객체 생성



idx = 0

while True:

        

    if net.empty():

        print('network fail')

        sys.exit()


    ##클래스 이름 불러오기

    classNames = []

    with open('./google/classification_classes_ILSVRC2012.txt', 'rt') as f:

        classNames = f.read().rstrip('\n').split('\n')

    # print(classNames[200])


    # blobFromImage(image, scalefactor, size, mean, swapRB, crop) -> retval

    blob = cv2.dnn.blobFromImage(img,1,(224,224),(104, 117, 123),swapRB=False)


    net.setInput(blob)

    prob = net.forward()

    #######################################################################################################

    print(prob.shape)  # 2D


    out = prob.flatten()

    print(out.shape)


    classid = np.argmax(out)

    print(classid)


    confidence = out[classid]

    print(confidence)


    category = classNames[classid]

    print(category)




    text = f'{classNames[classid]} ({confidence*100:4.2f})%'

    img = cv2.imread(img_files[idx])

    cv2.putText(img, text, (100,30), cv2.FONT_HERSHEY_COMPLEX, 0.8, (0,0, 255),2, cv2.LINE_AA)    

    cv2.imshow('img', img)

    

    if cv2.waitKey(2000) == 27:

        break

    idx += 1

    if idx >= len(img_files):

        idx = 0


cv2.waitKey(1)

cv2.destroyAllWindows()

cv2.waitKey(1)


 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

Computer Vision

번호 제목 글쓴이 날짜 조회수
18 Computer Vision Annotation Tool (CVAT) 관리자 06-22 819
17 모델 파일 속성 확인 관리자 05-27 908
16 Converting YOLOv5 PyTorch to TensorFlow Lite Format 관리자 05-27 1,224
15 TensorFlow와 PyTorch 동시 활용하기 관리자 05-27 839
14 코랩 런타임 관리자 05-27 1,562
13 Resnet 관리자 05-27 1,170
12 대장 내시경 관리자 05-21 622
11 BERT를 활용하여 한국어 사전학습모델 KR-BERT 관리자 05-20 593
10 NER - 개체명 인식 관리자 05-19 1,935
9 Winodws / Linux 플랫폼에 다양한 버전의 pytorch를 Pip 설치 관리자 05-17 547
8 yolo 관리자 05-13 627
7 Deep Learning to Improve Breast Cancer Detection 관리자 05-11 649
6 opencv로 좌표 형태의 도형을 mask 이미지 배열로 변환, 또 역으로 관리자 05-09 620
5 Mask-RCNN 수행하기 - OpenCV DNN 모듈 관리자 05-09 640
4 Opencv a to z 관리자 03-14 629
3 Opencv Deep learning 이미지 인식 관리자 03-04 573
2 Opencv Deep learning 관리자 03-04 606
1 안드로이드 학습관련 관리자 10-26 963