Get it on Google Play


Wm뮤 :: OPENCV 함수

블로그 이미지
가끔 그림그리거나 3D모델링하거나
취미로 로봇만드는
전자과 게임프로그래머 (퇴사함)
2022.3.22f1 주로 사용
모카쨩
@Ahzkwid

Recent Comment

Archive


2017. 11. 19. 19:21 OPENCV


#include "opencv2\opencv.hpp"  //기본적으로 불러오는 헤더




static CascadeClassifier face_Cascade //검색 시스템의 클래스

face.load("haarcascade_frontalface_default.xml")) //이런식으로 불러와서 사용, 성공시 true반환

face_Cascade.detectMultiScale(Mat 이미지,vector<Rect> 저장할 위치, 지정된 값만큼 스케일을 바꾸면서 검색, 후보를 몇개나 찾아볼지, 검색옵션(하단참조)CV_HAAR_FIND_BIGGEST_OBJECT 

,Size 최소 사이즈 Size(10,10)이렇게 쓰면 됨,Size 최대사이즈)

검색옵션(or연산으로 중첩가능)

CV_HAAR_FIND_BIGGEST_OBJECT 중첩시 가장 큰거만 반환

CV_HAAR_SCALE_IMAGE 이미지의 스케일을 바꾸면서 검색

CV_HAAR_DO_ROUGH_SEARCH 한개만 찾음



Mat는 2차원 배열같은것, img대용품


cvtColor(입력 Mat, 출력 Mat, CV_RGB2GRAY); //그레이생성


cvSetImageROI(img_buff,cvRect(0,0, img_buff.size().width, img_buff.size().height)); //스케일변경인줄 알았는데 아닌듯






circle(Mat형 이미지, Point(x,y),크기,색상 Scalar(0, 0, 255),굵기,0);//원그리기


putText(Mat 이미지,표시할 문자열,Point(x,y),폰트 (하단참조),폰트 굵기(기본값1),색상 Scalar(255, 255, 255))


CV_FONT_HERSHEY_SIMPLEX //산세리프폰트 중간크기

CV_FONT_HERSHEY_PLAIN //산세리프폰트 작은크기

CV_FONT_HERSHEY_DUPLEX //세리프폰트 2줄

CV_FONT_HERSHEY_COMPLEX //세리프폰트 중간크기

CV_FONT_HERSHEY_TRIPLEX //세리프폰트 3줄

CV_FONT_HERSHEY_COMPLEX_SMALL //세리프폰트 작은크기

CV_FONT_HERSHEY_SCRIPT_SIMPLEX //필기체

CV_FONT_HERSHEY_SCRIPT_COMPLEX //필기체2

CV_FONT_ITALC //이탤릭체



Mat img = imread("Lenna.png"); //이미지열기

imwrite("copy.jpg", img );//저장하기


mat접근방법

//at접근, 간편하지만 느림

if (img_t.type() == CV_8UC1)//단일8비트 채널

{

for (int i = 0; i < img_t.cols; i ++)//x축

{

for (int j = 0; j < img_t.rows; j ++)//y축

{

img_t.at<uchar>(i, j) = 255;//밝기

}

}

}

if (img_t.type() == CV_8UC3)//3색 8비트 채널 

{

for (int i = 0; i < img_t.cols; i ++)//x축

{

for (int j = 0; j < img_t.rows; j ++)//y축

{


img_t2.at<Vec3b>(j, i)[0] = 255;//B

img_t2.at<Vec3b>(j, i)[1] = 255;//G

img_t2.at<Vec3b>(j, i)[2] = 255;//R

img_t2.at<Vec3b>(j, i)= Vec3b(255,255,255);//BGR

}

}

}





포인터접근

if (img_t2.type()==CV_8UC3)//3색 8비트 채널 

{

float _t;

int img_t2_channels= img_t2.channels();

for (int j = 0; j < img_t2.rows; j++)//y축

{

uchar * ptr_img_t = img_t2.ptr<uchar>(j);

for (int i = 0; i < img_t2.cols*img_t2_channels; i += img_t2_channels)//x축

{


float r, g, b, _max, _min;

float h, s, v;

//if (img_t2.channels() == 3)

r = ptr_img_t[i + 2];

g = ptr_img_t[i + 1];

b = ptr_img_t[i + 0];

}

}

}





캠 연결



VideoCapture cam;

if (cam.isOpened() == true)//연결되어있는지
{
cam.release(); //연결끊기
}
else
{
cam.open(target);//캠열기
cam.set(CV_CAP_PROP_FRAME_WIDTH, wid);//가로설정
cam.set(CV_CAP_PROP_FRAME_HEIGHT, hei);//세로설정
cam.set(CV_CAP_PROP_FPS, fps);//fps설정
}


'OPENCV' 카테고리의 다른 글

OPENCV 오류  (0) 2017.11.19
OPENCV 준비  (0) 2017.11.19
posted by 모카쨩

저사양 유저용 블로그 진입