본문 바로가기
728x90
반응형

Programming6

[OpenCV] OpenCV dnn을 이용해 딥러닝 모델 사용하기 이번 포스팅에서는 OpenCV dnn을 이용해 딥러닝 모델 사용하는 방법에 대해 알아보겠습니다. 먼저 필요한 라이브러리들을 import 합니다. import cv2 import numpy as np from matplotlib import pyplot as plt 그 다음, 사용할 이미지를 읽어줍니다. image = cv2.imread("test.jpg") 저는 이미지에서 얼굴을 탐지하는 작업을 해보겠습니다. 사용할 모델은 RetinaFace의 caffe 모델인데 이를 opencv에서 사용하려면 prototxt 파일이 추가로 필요합니다. layer들을 정의해주는 파일이라고 생각하면 될 것 같습니다. opencv에서 모델파일과 prototxt 파일을 이용해 모델을 불러오려면 아래처럼 해주면 됩니다. 저는.. 2024. 2. 8.
[OpenCV] OpenCV를 이용한 이미지 warping 이번 포스팅에서는 opencv의 getPerspectiveTransform과 warpPerspective 함수를 이용한 이미지 warping 방법에 대해 알아보겠습니다. 먼저 필요한 라이브러리를 import 합니다. import cv2 import numpy as np warping하고자 하는 이미지를 읽어줍니다. image = cv2.imread('test.jpg') 변환하기 전 좌표와 변환 후의 좌표 값을 설정합니다. src_pts = np.array([[pts[0][0], pts[0][1]], [pts[1][0], pts[1][1]], [pts[2][0], pts[2][1]], [pts[3][0], pts[3][1]]], dtype=np.float32) dst_pts = np.array([[0, 0.. 2024. 1. 24.
[JNI] jbyte를 C++의 vector<uchar>로 변환하는 방법 이번 포스팅에서는 매개변수로 받은 jbyte형 변수를 C++의 vector 자료형으로 변환하는 방법에 대해 설명하겠습니다! JNI 함수 쪽에서 아래와 같은 과정을 통해 변환해주면 됩니다. void byte2char( JNIEnv *env, jclass obj, jbyteArray tmp){ int tmp_len = env->GetArrayLength(tmp); unsigned char* tmpBuffer = new unsigned char[tmp_len]; env->GetByteArrayRegion(tmp, 0, tmp_len, reinterpret_cast(tmpBuffer)); vector newtmp(*tmpBuffer, tmp_len); } 1. 먼저, byte형 변수의 길이가 필요합니다. env.. 2023. 3. 12.
[JNI] JNI 사용법 및 튜토리얼 (2) 이전 포스팅에 이어서 JNI에 대해 설명하겠습니다. 이전에는 자바의 클래스 파일을 만들고 이를 통해 헤더 파일을 생성하여 이용하는 방법에 대해 설명했습니다. 이번에는 헤더파일을 생성하지 않고 이용하는 방법에 대해 설명하겠습니다. 바로 JNI_OnLoad() 함수를 이용하는 것입니다. 자바 코드 부분은 이전 포스팅과 동일하고, C++ 구현부에만 차이가 있습니다. jint JNI_OnLoad(JavaVM* vm, void* reserved) { JNIEnv* env = NULL; if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK){ return JNI_ERR; } jclass c = env->FindClass("com/test/testjni.. 2023. 3. 12.
728x90
반응형