반응형


이번 영상에서는 Keras와 OpenCV를 사용하여 직접 쓴 손글씨를 인식하는 방법을 소개합니다. 









작성 2020. 3. 30




반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기


제가 쓴 책도 한번 검토해보세요.

  1. Favicon of https://fishpoint.tistory.com BlogIcon 지구빵집 2020.03.31 15:28 신고

    잘보고 갑니다. 구독해요~^^

  2. BlogIcon fourleg2020@naver.com 2020.04.23 15:04

    항상 잘보고있습니다!! 이런 에러가 뜨네요... 어떻게 처리하나요

    Traceback (most recent call last):
    File "C:/Users/wnsgh/PycharmProjects/TensorFlow_example/img test2.py", line 30, in <module>
    img_digit = cv.morphologyEx(img_digit, cv.MORPH_DILATE, kernel)
    cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:757: error: (-215:Assertion failed) dims <= 2 && step[0] > 0 in function 'cv::Mat::locateROI'

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.04.23 21:24 신고

      에러난 함수 실행되기전에 img_digit에 이미지가 제대로 저장되있나 imshow로 확인해보세요.

  3. 서윤 2020.05.19 13:42

    파이썬 프롬프트로 해도 같은 방식으로 작성하면 되는건가요?}

  4. 2020.05.19 15:36

    model.fit_generator(datagen.flow(x_train, y_train, batch_size=batch_size),
    ... steps_per_epoch=x_train.shape[0] // batch_size,
    ... validation_data=(x_test, y_test),
    ... epochs=epochs, verbose=2)
    WARNING:tensorflow:From <stdin>:4: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
    Instructions for updating:
    Please use Model.fit, which supports generators.
    Epoch 1/12
    468/468 - 98s - loss: 1.1417 - accuracy: 0.6151 - val_loss: 0.2093 - val_accuracy: 0.9462
    Epoch 2/12
    라고 뜨는데 무시하고 계속 설치하면 되는건가요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.19 19:55 신고

      당장 사용하는데 문제가 되지 않기 때문에 무시해도 됩니다.

      이후 버전에서 API가 변경될 수 있다는 의미입니다.

  5. 아이우비 2020.05.29 16:18

    안녕하세요 오랜만에 질문드립니다.

    자율주행에서 숫자인식이 필요해 여러 글읽고 참고하고있습니다!! 항상감사해요
    그런데 아무래도 라즈베리파이로 이코드를 학습시키는게 무리가 있는지 계속 재부팅이 되더라고요
    그래서 데스크탑으로 학습을 시키고 그 데이터를 라즈베리파이에 넣어줘서 진행하려고하는데
    Traceback (most recent call last):
    File "/home/pi/Desktop/Template matching.py", line 43, in <module>
    model = load_model('model.h5')
    File "/home/pi/.local/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/save.py", line 149, in load_model
    loader_impl.parse_saved_model(filepath)
    File "/home/pi/.local/lib/python3.7/site-packages/tensorflow_core/python/saved_model/loader_impl.py", line 83, in parse_saved_model
    constants.SAVED_MODEL_FILENAME_PB))
    OSError: SavedModel file does not exist at: model.h5/{saved_model.pbtxt|saved_model.pb}
    요러한 에러가 뜨네요 model.h5를 파이 바탕화면에 넣어주었습니다.
    혹시 다른컴퓨터를 통해서 학습한 결과를 라즈베리파이에서 이용할순없을까요 ?
    그리고 이미지가 아닌 while 문을 써서 동영상형태로 이미지처리가 무리가있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.29 20:18 신고

      다른 컴퓨터에서 학습한 것을 라즈베리파이에서 사용할 수 있습니다.

      다음 패키지를 라즈베리파이에 설치해서 해결되었다는 글이 보이네요
      sudo apt-get install python3-h5py


      아래 링크를 참고하세요
      https://github.com/tensorflow/tensorflow/issues/35909

  6. 나부랭탱 2020.06.01 22:37

    영상 보면서 공부 많이 해가고 있습니다.

    한가지 질문이 있는데, 위에서는 손글씨를 사진으로 받아서 인식을 하셨는데
    이것을 웹캠으로 받아서 하고 실시간으로 인식을 하려고 하는데
    cv.VideoCapture(0) 를 사용해서 img_color로 설정해줬는데 오류가 발생해서 이를 해결하기 위한 방법을 알고 싶습니다.

  7. hoon 2020.06.02 18:15

    처음 cv.imshow('digit', img_binary) 부분에선 이미지가 정상출력되고

    img_digit = np.zeros((length, length, 1), np.uint8)
    여기도 공백 이미지가 출력되는데

    img_digit = img_binary[new_y:new_y + length, new_x:new_x + length] 연산 이후 이미지를 찾을수 없다고 나오네요
    cv2.error: OpenCV(3.4.2) C:\Miniconda3\conda-bld\opencv-suite_1534379934306\work\modules\highgui\src\window.cpp:356: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

    그래서 이후 윗 댓글처럼
    img_digit = cv.morphologyEx(img_digit, cv.MORPH_DILATE, kernel) 에서
    cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:757: error: (-215:Assertion failed) dims <= 2 && step[0] > 0 in function 'cv::Mat::locateROI'
    오류가 발생합니다.

    초기 이미지 파일 사이즈가 영향을 줄까요?



    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.06.02 18:32 신고

      new_x new_y length 가지고 계산한 roi 좌표를 출력해보세요 잘못된듯합니다

    • hoon 2020.06.03 10:12

      boundingRect 결과가 0이나오네요

      findContours가 잘못된것 같은데

      역시 이미지 문제일까요?

      그림판에 숫자 그리고 테스트 한거거든요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.06.03 10:14 신고

      단계별로 이미지를 출력해보세요

    • hoon 2020.06.03 10:41

      cv.morphologyEx(img_binary, cv.MORPH_CLOSE, kernel)
      이후 바이너리 이미지가 출력이 되긴하는데
      그냥 흑백 반전만 되서 나옵니다

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.06.03 11:40 신고

      이진화시 THRESH_BINARY를 사용하도록 수정해보세요

    • hoon 2020.06.03 15:56

      BINARY 사용시 오류는 없고 이미지도 잘 뜨는데 boundingRect가 x 0 y 0 w 1 h 1152로 나오고 coutour 루프가 무한으로 도네요..

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.06.03 16:32 신고

      검출된 컨투어 개수를 확인해보세요.

    • hoon 2020.06.03 18:34

      본문의
      contours, hierarchy = cv.findContours(img_binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) 에서
      ValueError: too many values to unpack (expected 2)
      오류 때문에
      contours, hierarchy, _ = 와 같이 했었었는데

      _, contours, hierarchy
      contours를 두번째 변수로 하니
      컨투어가 한개로 검출되긴 하지만
      숫자 인식을 못하는것인지
      창 전체를 초록 rectangle이 씌우네요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.06.03 18:40 신고

      사용하는 OpenCV 버전에 따라 findContours 함수의 사용 방법이 다음처럼 차이가 있습니다. 




      OpenCV 4.x

      contours, hierarchy = cv.findContours(img_binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)


      OpenCV 3.x

      _, contours, hierarchy = cv.findContours(img_binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)

    • hoon 2020.06.04 11:33

      음 에러는 없는데 숫자 하나에 컨투어가 겹쳐서 잡히는 현상도 있고

      제대로 잡힌 컨투어 predict전 배열 따와서 보면 숫자 형상 잘 잡혀있는데도 모든 predict가 8로 나오네요

      모델 fit 할때 다른 예제랑 차이 심하게 날정도로 epoch마다 2~3분씩 걸렸는데 뭐가 문젠지 헣 어렵군요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.06.04 16:30 신고

      손글씨 사진을 바꿔보세요.

      컨투어가 2개 잡히는건 바이너리 이미지에서 숫자가 둘로 분해된게 아닌가 보세요

+ Recent posts