Azure Blob에 이미지를 업로드한 후 Azure Functions에서 Python과 OpenCV를 사용하여 어떻게 해야 합니까? (Azure Functions v1, Python3.6.1, OpenCV4.0.0)
Blob을 트리거하는 Function App (Python) 만들기
1. 리소스 만들기에서 Function App을 찾아서 새로 만듭니다. (Linux(미리 보기)를 선택하면 런타임 스택에서 Python을 선택할 수 있지만 이번에는 하지 않습니다.)
2. 가능한 리소스로 이동하여 Function App 설정에서 런타임 버전을
~1
로 변경합니다.3. 새롭게 커스텀 함수를 작성합니다. 런타임 버전이
~2
일 때 보이는 방법이 다르며 이전 버전으로 돌아가는 것을 볼 수 있습니다.4. 실험 지원을 사용하면 언어로 파이썬을 선택할 수 있습니다. Blob Storage를 트리거하고 싶지만 샘플이 없으므로 먼저
Queue Trigger
를 선택하여 작성합시다. 스토리지 계정 연결 新規
에서 연결할 스토리지 계정을 선택할 수 있습니다. 스토리지에 컨테이너를 작성하십시오. (참고까지: "1")5. 함수를 만든 후
統合
트리거에서 Queue Trigger를 제거하고 Azure BLOB ストレージ Trigger
로 변경합니다. 경로에 testcontainer/{name}.jpg
가 있지만 연결된 저장소의 컨테이너 (testcontainer)에 이미지 (.jpg)가 업로드되면이 함수가 실행됩니다.6. 함수를 아래와 같이
保存および実行
합니다. 테스트는 실제로 존재하는 컨테이너 이름/Blob 이름(예: testcontainer/lena.jpg)이어야 합니다.import os
print(os.environ['inputBlob'])
이미지 파일의 임시 경로가 보이면 성공입니다.
2019-01-10T08:32:08.519 [Info] Function started (Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
2019-01-10T08:32:10.129 [Info] D:\local\Temp\Functions\Binding\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\inputBlob
2019-01-10T08:32:10.129 [Info] Function completed (Success, Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, Duration=1605ms)
Azure Functions에서 Python3 사용
1. 파이썬 버전은 2.7이지만 python3과 opencv를 사용하고 싶으므로 「2」, 「4」을 참조하여 환경을 구축하십시오. 먼저 브라우저에서 Kudu 디버그 콘솔을 엽니다. {your-app-name}에 Function App의 이름을 넣습니다.
https://{your-app-name}.scm.azurewebsites.net/DebugConsole
2. Python3을 설치합니다. 콘솔에서 다음 명령을 입력하십시오.
> cd D:\home\site\tools
> nuget.exe install -Source https://www.siteextensions.net/api/v2/ -OutputDirectory D:\home\site\tools python361x64
> mv /d/home/site/tools/python361x64.3.6.1.3/content/python361x64/* /d/home/site/tools/
3. Functions로 돌아가서 파이썬 버전 확인은 다음과 같이 함수를 실행합니다.
import sys
print(sys.version)
Python3.6.1이되면 성공입니다.
2019-01-10T08:44:43.901 [Info] Function started (Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
2019-01-10T08:44:45.903 [Info] 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]
2019-01-10T08:44:45.903 [Info] Function completed (Success, Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, Duration=2001ms)
4. Kudu로 돌아가서 pip로 opencv를 설치하십시오. 아래 명령을 두드리고 설치합니다. contrib도 들어갑니다.
> D:\home\site\tools\python.exe -m pip install opencv-python
> D:\home\site\tools\python.exe -m pip install opencv-contrib-python
5. Functions로 돌아가서 OpenCV 버전 확인은 다음과 같이 함수를 실행합니다.
dir(cv2.aruco)
는 contrib인 aruco가 들어 있는지 확인하기 위해서입니다.import cv2
print(cv2.__version__)
print(dir(cv2.aruco))
2019-01-10T08:48:24.299 [Info] Function started (Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
2019-01-10T08:48:32.566 [Info] 4.0.0
2019-01-10T08:48:32.566 [Info] ['Board_create', 'CORNER_REFINE_APRILTAG', 'CORNER_REFINE_CONTOUR', 'CORNER_REFINE_NONE', 'CORNER_REFINE_SUBPIX', 'CharucoBoard_create', 'DICT_4X4_100', 'DICT_4X4_1000', 'DICT_4X4_250', 'DICT_4X4_50', 'DICT_5X5_100', 'DICT_5X5_1000', 'DICT_5X5_250', 'DICT_5X5_50', 'DICT_6X6_100', 'DICT_6X6_1000', 'DICT_6X6_250', 'DICT_6X6_50', 'DICT_7X7_100', 'DICT_7X7_1000', 'DICT_7X7_250', 'DICT_7X7_50', 'DICT_APRILTAG_16H5', 'DICT_APRILTAG_16h5', 'DICT_APRILTAG_25H9', 'DICT_APRILTAG_25h9', 'DICT_APRILTAG_36H10', 'DICT_APRILTAG_36H11', 'DICT_APRILTAG_36h10', 'DICT_APRILTAG_36h11', 'DICT_ARUCO_ORIGINAL', 'DetectorParameters_create', 'Dictionary_create', 'Dictionary_create_from', 'Dictionary_get', 'Dictionary_getBitsFromByteList', 'Dictionary_getByteListFromBits', 'GridBoard_create', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'calibrateCameraAruco', 'calibrateCameraArucoExtended', 'calibrateCameraCharuco', 'calibrateCameraCharucoExtended', 'custom_dictionary', 'custom_dictionary_from', 'detectCharucoDiamond', 'detectMarkers', 'drawAxis', 'drawDetectedCornersCharuco', 'drawDetectedDiamonds', 'drawDetectedMarkers', 'drawMarker', 'drawPlanarBoard', 'estimatePoseBoard', 'estimatePoseCharucoBoard', 'estimatePoseSingleMarkers', 'getBoardObjectAndImagePoints', 'getPredefinedDictionary', 'interpolateCornersCharuco', 'refineDetectedMarkers']
2019-01-10T08:48:32.738 [Info] Function completed (Success, Id=3c09b959-a09c-4aa3-9626-f51330b9f4a7, Duration=8432ms)
OpenCV4.0.0이 설치되었습니다. 버전을 지정하여 설치하려면 「3」을 확인하십시오.
Blob에 이미지가 업로드되면 이미지 크기 확인
1. 함수를 아래와 같이 실행합니다.
import os
import cv2
img = cv2.imread(os.environ['inputBlob'], -1)
print(img.shape)
이미지 크기가 표시되면 성공입니다.
2019-01-10T08:58:41.010 [Info] Function started (Id=66057cdb-6a7c-4057-a0b2-e2feedf8b531)
2019-01-10T08:58:48.015 [Info] (512, 512, 3)
2019-01-10T08:58:48.120 [Info] Function completed (Success, Id=66057cdb-6a7c-4057-a0b2-e2feedf8b531, Duration=7104ms)
2. 실제로 Azure 포털이나 Azure Storage Explorer에서 컨테이너(testcontainer)에 이미지(.jpg)를 업로드하여 로그를 확인해 보세요.
3. 이제 Blob에 이미지가 업로드되면 Functions에서 Python과 OpenCV를 사용하여 어떻게 할 수 있습니다.
요약
참고문헌
[1] Azure Functions: Blob 컨테이너를 트리거로 하는 Python 함수 만들기
[2] Azure Functions에서 Python3 및 pip 사용
[3] opencv-python
[4] Azure Functions: FaceAPI와 OpenCV에서 얼굴 검출을 해 보았다. ① -Python3과 외부 라이브러리의 도입-
Reference
이 문제에 관하여(Azure Blob에 이미지를 업로드한 후 Azure Functions에서 Python과 OpenCV를 사용하여 어떻게 해야 합니까? (Azure Functions v1, Python3.6.1, OpenCV4.0.0)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SatoshiGachiFujimoto/items/8e2829394c217d9385be텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)