해결된 질문
작성
·
599
0
바로 Haar의 첫번쨰 강의인 이전강의는 잘 돌아갔습니다.
그리고 물론 TK인터를 사용하는 데이터시각화강의에서도 모든 예제가 잘 돌아갔습니다.
그런데 2번째는 pyimage5를 찾을수 없다면서 에러가 뜹니다.
왜그런걸까요? 도저히 못잡겠네요
답변 4
0
안녕하세요?
문제가 해결되었다니 다행입니다.
저도 가끔 아주 사소한 문제로 고생하는 경우가 있습니다.
당시는 힘들어도 나중에는 도움이 되더라고요.
수업에서 좋은 내용 배우시길 기원합니다.
감사합니다.
0
답변감사드립니다.
문제는 정말 사소한거였습니다.
jupyter notebook이 실행되고있을때 Home에 image파일을 추가했었는데
그게 jupyter노트북을 끄고 다시 켜니 이 파일을 이제서야 인식합니다.
home에 파일을 추가하면 다시 노트를 껐다켜야 home에 추가한 파일을 프로그램이 인식하나봅니다.
이런 사소한문제때문에 몇시간을 해매서 그런지 앞으로의 단계들이 멀게만 느껴집니다.
수업 잘듣고있습니다. 감사합니다
0
안녕하세요?
에러 메시지만 봐서는 print('File name : ', file_name)도 실행이 안되는 것을 보니 이미지를 못가지고 올 수도 있을 것 같은데 './image'폴더와 'marathon_01.jpg'파일이 존재하는지 먼저 확인해보세요.
감사합니다.
0
import cv2
import numpy as np
from tkinter import *
from PIL import Image
from PIL import ImageTk
#새로운 팩
from tkinter import filedialog
face_cascade_name = './cv2/data/haarcascade_frontalface_alt.xml'
eyes_cascade_name = './cv2/data/haarcascade_eye_tree_eyeglasses.xml'
file_name = './image/marathon_01.jpg'
title_name = 'Haar cascade object detection'
frame_width = 500
#frame 크기를 바꾸면서 활용
def selectFile():
file_name = filedialog.askopenfilename(initialdir = "./image",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print('File name : ', file_name)
read_image = cv2.imread(file_name)
(height, width) = read_image.shape[:2]
frameSize = int(sizeSpin.get())
ratio = frameSize / width
dimension = (frameSize, int(height * ratio))
read_image = cv2.resize(read_image, dimension, interpolation = cv2.INTER_AREA)
image = cv2.cvtColor(read_image, cv2.COLOR_BGR2RGB)
image = Image.fromarray(image)
imgtk = ImageTk.PhotoImage(image=image)
detectAndDisplay(read_image)
def detectAndDisplay(frame):
frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame_gray = cv2.equalizeHist(frame_gray)
#-- Detect faces
faces = face_cascade.detectMultiScale(frame_gray)
for (x,y,w,h) in faces:
center = (x + w//2, y + h//2)
frame = cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 4)
faceROI = frame_gray[y:y+h,x:x+w]
#-- In each face, detect eyes
eyes = eyes_cascade.detectMultiScale(faceROI)
for (x2,y2,w2,h2) in eyes:
eye_center = (x + x2 + w2//2, y + y2 + h2//2)
radius = int(round((w2 + h2)*0.25))
frame = cv2.circle(frame, eye_center, radius, (255, 0, 0 ), 4)
#cv2.imshow('Capture - Face detection', frame)
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
image = Image.fromarray(image)
imgtk = ImageTk.PhotoImage(image=image)
detection.config(image=imgtk)
detection.image = imgtk
#main
main = Tk()
main.title(title_name)
main.geometry()
read_image = cv2.imread("./image/marathon_01.jpg")
(height, width) = read_image.shape[:2]
ratio = frame_width / width
dimension = (frame_width, int(height * ratio))
read_image = cv2.resize(read_image, dimension, interpolation = cv2.INTER_AREA)
image = cv2.cvtColor(read_image, cv2.COLOR_BGR2RGB)
#bgr을 RGB로 바꿔준다.
image = Image.fromarray(image)
imgtk = ImageTk.PhotoImage(image=image)
face_cascade_name = './cv2/data/haarcascade_frontalface_alt.xml'
eyes_cascade_name = './cv2/data/haarcascade_eye_tree_eyeglasses.xml'
face_cascade = cv2.CascadeClassifier()
eyes_cascade = cv2.CascadeClassifier()
#-- 1. Load the cascades
if not face_cascade.load(cv2.samples.findFile(face_cascade_name)):
print('--(!)Error loading face cascade')
exit(0)
if not eyes_cascade.load(cv2.samples.findFile(eyes_cascade_name)):
print('--(!)Error loading eyes cascade')
exit(0)
label=Label(main, text=title_name)
label.config(font=("Courier", 18))
label.grid(row=0,column=0,columnspan=4)
sizeLabel=Label(main, text='Frame Width : ')
sizeLabel.grid(row=1,column=0)
sizeVal = IntVar(value=frame_width)
sizeSpin = Spinbox(main, textvariable=sizeVal,from_=0, to=2000, increment=100, justify=RIGHT)
#정렬은 오른쪽으로
sizeSpin.grid(row=1, column=1)
Button(main,text="File Select", height=2,command=lambda:selectFile()).grid(row=1, column=2, columnspan=2, sticky=(W, E))
detection=Label(main, image=imgtk)
detection.grid(row=2,column=0,columnspan=4)
detectAndDisplay(read_image)
main.mainloop()