Error No module named 'cv2' 문제 해결 및 간단한 샘플 코드 첨부.
페이지 정보
본문
마이크로소프트의 C#은 그리 어렵지 않게 OpenCV를 설치할 수 있는데요. 아직까지도 외부 언어들에 대해서는 에러가 발생하곤 합니다. 이번에 Visual Studio에서 Python을 개발하기 위한 환경을 구성하면서 여러가지 난관에 부딪히고 있네요-_-;
No module named 'cv2'
import cv2를 입력하면 모듈이 인식이 안됩니다. 하지만~ 대문자로 CV2를 import 시키면 인식하죠. 어떤 이유인지는 모르겠지만 Visual Studio의 PyPI로 설치하면 무언가 대소문자가 잘못되는듯 합니다. 뭐 예상만 할뿐~ 로우레벨까지 까볼(분석) 생각은 하지도 않게 되네요. 바쁘니까요-_-; 아무튼, 설치되어 있는 아나콘다3을 이용해서 설치해보기로 합니다. 윈도우 시작 메뉴 옆 검색창에서 anaconda를 입력하고 Anaconda Prompt (Anaconda3)을 클릭하세요. 아나콘다는 [ 여기 ]에서 다운로드 받을 수 있습니다.
아래와 같이 입력하고 설치하세요.
pip install opencv-python
뭐 비주얼 스튜디오에서 설치하는 것과 크게 다르지 않습니다. 그런데 왜 비주얼 스튜디오에서는 CV2로 모듈 이름이 만들어지는지 모르겠네요-_-; 아무튼 잘 되는지 확인해봐야겠죠? 간단한 샘플 코드인데요. Python 딥러닝 게시판에 있는 코드를 토대로 작성했습니다. [ 원본 블로그 보기 ] 솔루션 소스 코드는 첨부되어 있으니 다운로드 받아서 해보세요^^
import cv2 as cv
import numpy as np
img_rgb = cv.imread('images/test.png')
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template1 = cv.imread('images/cactus1.png', 0)
template2 = cv.imread('images/cactus2.png', 0)
template3 = cv.imread('images/bird1.png', 0)
template4 = cv.imread('images/bird2.png', 0)
w1, h1 = template1.shape[::-1]
w2, h2 = template2.shape[::-1]
w3, h3 = template3.shape[::-1]
w4, h4 = template4.shape[::-1]
res1 = cv.matchTemplate(img_gray, template1, cv.TM_CCOEFF_NORMED)
res2 = cv.matchTemplate(img_gray, template2, cv.TM_CCOEFF_NORMED)
res3 = cv.matchTemplate(img_gray, template3, cv.TM_CCOEFF_NORMED)
res4 = cv.matchTemplate(img_gray, template4, cv.TM_CCOEFF_NORMED)
threshold = 0.8
loc1 = np.where(res1 >= threshold)
loc2 = np.where(res2 >= threshold)
loc3 = np.where(res1 >= threshold)
loc4 = np.where(res2 >= threshold)
for pt in zip(*loc1[::-1]):
cv.rectangle(img_rgb, pt, (pt[0] + w1, pt[1] + h1), (0, 0, 255), 2)
for pt in zip(*loc2[::-1]):
cv.rectangle(img_rgb, pt, (pt[0] + w2, pt[1] + h2), (0, 255, 0), 2)
for pt in zip(*loc1[::-1]):
cv.rectangle(img_rgb, pt, (pt[0] + w3, pt[1] + h3), (0, 0, 255), 2)
for pt in zip(*loc2[::-1]):
cv.rectangle(img_rgb, pt, (pt[0] + w4, pt[1] + h4), (0, 255, 0), 2)
cv.imshow('result', img_rgb)
cv.waitKey(0)
참고한 블로그의 결과와 다르게 나오는군요-_-; 아무튼 그래도 검출은 잘 되었네요. 아마도... 2번 실행된게 아닌가 생각됩니다.
아래는 얼굴 인식인데요. 이것도 그렇게 인식률이 좋지는 않네요. 머신 러닝 관련 자료들을 찾다보니 정말 다양한 형식으로 모델이 존재하고 방식도 천차만별인걸 알게 되었습니다. 어떤걸 선택해서 사용해야 할지 참 고민이네요...ㅋ
import cv2
import sys
image_file = "images/face.jpg"
cascade_file = "data/haarcascades/haarcascade_frontalface_alt.xml"
image = cv2.imread(image_file)
image_gs = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier(cascade_file)
face_list = cascade.detectMultiScale(image_gs, scaleFactor=1.1, minNeighbors=1, minSize=(150, 150))
if len(face_list) > 0:
print(face_list)
color = (0, 0, 255)
for face in face_list:
x, y, w, h = face
cv2.rectangle(image, (x, y), (x+w, y+h), color, thickness=8)
else:
print("no face")
cv2.imshow('result', image)
cv2.waitKey(0)
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다. 50프로밖에 인식이 안되네요. 전체 솔루션 소스는 첨부해두었으니 관심 있는 분들은 다운로드 받아서 테스트 해보세요~
간단하게 에러만 해결하려고 했는데... 글을 적다보니 길어졌네요-_-;
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글master을(를) 푸시하는 중 원격 리포지토리에 푸시하는 동안 오류가 발생했습니다. Git failed with a fatal error. 21.06.12
- 다음글Visual Studio에 OpenCV 설치하기. 21.06.12
댓글목록
등록된 댓글이 없습니다.