특수문자 삽입



기호 

문자실체 참조 

< 

&lt; 

>

&gt; 

&

&amp; 

&copy; 

®

&reg;

&trade;

"

&quot; 

'

&lsquo; 

·

&middot;

 (공백)

&nbsp; 



모바일 기기에 맞춰서 페이지 보여주기



html)

메타태그 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="utf-8">
    
    <!-- 
        width = 디바이스의 너비
        height = 디바이스의 높이
        initial-scale = 초기배율
        minimum-scale = 최소배율
        maximum-scale = 최대배율
        user-scalable = 확대/축소 여부
    -->
    <meta name="viewport" 
          content="width=device-width, height=device-height, 
                   minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0">
    <title>모바일에서 제대로 보이게 하기</title>
</head>
 
<body>
    <p>가나다라마바사아자차카타파하</p>
    <span>아야어여오요우유으이</span>
    <h4>ABCDEFGHIJKLMNOPQRSTUVWXYZ</h4>
</body>
</html>
cs



결과




uiautomator.jar 경로

<Android SDK 경로>/ platforms / <안드로이드 버전 폴더> / uiautomator.jar



android.jar 경로

<Android SDK 경로>/ platforms / <안드로이드 버전 폴더> / android.jar



uiautomatorviewer.bat 경로

<Android SDK 경로> / tools / bin / uiautomatorviewer.bat 

동영상 이진영상으로 만들기



c++)

한 프레임씩 가져와 이진영상으로 만든다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *frame;    //동영상 프레임
    double threshold = 128;    //이진 영상 임계값
 
    //동영상파일 로드
    CvCapture *video = cvCaptureFromFile("D:/study/testmedia.mov");
 
    //첫번째 프레임
    cvGrabFrame(video);
    frame = cvRetrieveFrame(video);
    //반전된 프레임객체생성
    IplImage *binaryImage = cvCreateImage(cvGetSize(frame), frame->depth, frame->nChannels);
 
    cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
    while (1) {
        //cvGrabFrame(동영상) : 하나의 프레임을 잡음
        cvGrabFrame(video);
        //cvRetrieveFrame(동영상) : 잡은 프레임으로부터 이미지를 구함
        frame = cvRetrieveFrame(video);
 
        if (!frame || cvWaitKey(10>= 0) { break; }
 
 
        //이진영상 생성
        //cvThreshold(원본 이미지, 결과 이미지, 임계값, 최대 명암값, 이진화 방식)
        cvThreshold(frame, binaryImage, threshold, 255, CV_THRESH_BINARY);
        //이진화 방식
        //CV_THRESH_BINARY : 임계값초과 255, 임계값이하 0
        //CV_THRESH_BINARY_INV : 임계값초과 0, 임계값이하 255
        //CV_THRESH_TRUNC : 임계값초과-임계값, 임계값이하-원래픽셀값
        //CV_THRESH_TOZERO : 임계값초과-원래픽셀값, 임계값이하-0
        //CV_THRESH_TOZERO_INV : 임계값초과-0, 임계값이하-원래픽셀값
 
 
        cvShowImage("video", binaryImage);
    }
 
 
    //메모리에서 동영상 해제
    cvReleaseCapture(&video);
 
    cvReleaseImage(&frame);
    cvReleaseImage(&binaryImage);
    cvDestroyWindow("video");
}
cs



결과



동영상 반전하기



c++)

한 프레임씩 가져와 반전시킨다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *frame;    //동영상 프레임
    //동영상파일 로드
    CvCapture *video = cvCaptureFromFile("D:/study/testmedia.mov");
 
    //첫번째 프레임
    cvGrabFrame(video);
    frame = cvRetrieveFrame(video);
    //반전된 프레임객체생성
    IplImage *reverse = cvCreateImage(cvGetSize(frame), frame->depth, frame->nChannels);
 
    cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
    while (1) {
        //cvGrabFrame(동영상) : 하나의 프레임을 잡음
        cvGrabFrame(video);
        //cvRetrieveFrame(동영상) : 잡은 프레임으로부터 이미지를 구함
        frame = cvRetrieveFrame(video);
 
        if (!frame || cvWaitKey(10>= 0) { break; }
 
        //이미지반전하기
        cvNot(frame, reverse);
    
        cvShowImage("video", reverse);
    }
 
 
    //메모리에서 동영상 해제
    cvReleaseCapture(&video);
 
    cvReleaseImage(&frame);
    cvDestroyWindow("video");
}
cs



결과



동영상에 자막 넣기



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *frame;    //동영상 프레임
 
 
    CvFont font;
    //cvInitFont(폰트, 폰트이름, 글자 수평스케일, 글자 수직스케일, 기울임, 굵기) : 폰트 초기화
    cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1105);
 
    //동영상파일 로드
    CvCapture *video = cvCaptureFromFile("D:/study/testmedia.mov");
 
    cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
    while (1) {
        //cvQueryFrame(동영상) : 동영상으로부터 프레임을 읽고 반환
        //cvQueryFrame = cvGrabFrame함수와 cvRetrieveFrame함수를 합친것
        frame = cvQueryFrame(video);
 
        if (!frame || cvWaitKey(10>= 0) { break; }
 
        //cvPutText(이미지, 텍스트, 출력위치, 폰트, 텍스트색상) : 텍스트를 이미지에 추가
        cvPutText(frame, "TEST TEXT", cvPoint(100100), &font, CV_RGB(255,0,0));
 
        cvShowImage("video", frame);
    }
 
 
    //메모리에서 동영상 해제
    cvReleaseCapture(&video);
 
    cvReleaseImage(&frame);
    cvDestroyWindow("video");
}
cs



결과

동영상에 글자가 출력된다



동영상 저장하기



c++)

 파일을 만들고 한프레임씩 쓴다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *frame = 0;
    CvVideoWriter *writer = 0;
 
    //cvCaptureFromFile(파일명) : 동영상 파일 불러오기
    CvCapture *capture = cvCaptureFromAVI("D:/study/su.avi");
 
    cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
    
    int fps = 30;    //30프레임
 
    //첫번째 프레임으로부터 크기 구하기
    cvGrabFrame(capture);
    frame = cvRetrieveFrame(capture);
    //cvCreateVideoWriter(경로, 코덱방식, fps, 프레임크기) : 동영상파일 생성
    //CV_FOURCC('D', 'I', 'V', 'X') : MPEG-4 코덱
    writer = cvCreateVideoWriter("D:/study/opencv_ex1/copy.avi", CV_FOURCC('D''I''V''X'), fps, cvGetSize(frame));
    while (1) {
        //cvGrabFrame(동영상) : 하나의 프레임을 잡음
        cvGrabFrame(capture);
        //cvRetrieveFrame(동영상) : 잡은 프레임으로부터 이미지를 구함
        frame = cvRetrieveFrame(capture);
 
        if (!frame || cvWaitKey(10>= 0) { break; }
 
        
        //cvWriteFrame(동영상, 프레임) : 지정한 동영상에 프레임을 쓴다
        cvWriteFrame(writer, frame);
 
        cvShowImage("video", frame);
    }
 
    //cvReleaseVideoWriter(동영상) : 메모리에서 해제한다
    cvReleaseVideoWriter(&writer);
 
    cvReleaseCapture(&capture);
    cvDestroyWindow("video");
}
 
cs



결과

동영상 파일이 생성된다



동영상에서 에지 검출하기



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *frame = 0;
    IplImage *edge = 0;
 
    //cvCaptureFromFile(파일명) : 동영상 파일 불러오기
    CvCapture *video = cvCaptureFromFile("D:/study/su.avi");
 
    cvNamedWindow("edge", CV_WINDOW_NORMAL);
 
    while (1) {
        //cvGrabFrame(동영상) : 하나의 프레임을 잡음
        cvGrabFrame(video);
        //cvRetrieveFrame(동영상) : 잡은 프레임으로부터 이미지를 구함
        frame = cvRetrieveFrame(video);
 
        if (!frame || cvWaitKey(10>= 0) { break; }
 
        //에지 이미지객체 생성
        edge = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 3);
    
        //에지(edge) : 밝기가 낮은값에서 높은값으로, 높은값에서 낮은값으로 변화하는 경계에 해당되는 부분
        //cvSobel(원본이미지, 에지이미지, x방향 미분, y방향 미분, 커널크기) : 에지검출함수
        cvSobel(frame, edge, 113);
 
        //이미지 보여주기
        cvShowImage("edge", edge);
    }
 
 
    //cvReleaseCapture(해제할 동영상) : 메모리에서 동영상 해제
    cvReleaseCapture(&video);
    //이미지 해제
    cvReleaseImage(&frame);
    cvReleaseImage(&edge);
    //윈도우 해제
    cvDestroyWindow("edge");
}
cs



결과

에지형태의 동영상이 보여진다




컬러영상을 흑백영상으로 변환하기

프레임에서 뽑은 컬러이미지를 흑백이미지로 변환하면 된다



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *frameImage, *blackImage;
    //cvCaptureFromFile(파일명) : 동영상 파일 불러오기
    CvCapture *video = cvCaptureFromFile("D:/study/testmedia.mov");
 
 
    cvNamedWindow("video", CV_WINDOW_KEEPRATIO);
 
    //무한루프로 프레임 돌리며 이미지 구해서 재생
    while (1) {
        //cvGrabFrame(동영상) : 하나의 프레임을 잡음
        cvGrabFrame(video);
 
        //cvRetrieveFrame(동영상) : 잡은 프레임으로부터 이미지를 구함
        frameImage = cvRetrieveFrame(video);
 
        if (!frameImage) { break; }
 
        blackImage = cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_8U, 1);
        //cvCvtColor(원본이미지, 결과이미지, 변환모드)
        //변환모드 : CV_<src color code>2<dst color code>
        //color code : RGB, BGR, GRAY, HSV, YcrCb, XYZ, Lab, Luv, HLS
        cvCvtColor(frameImage, blackImage, CV_BGR2GRAY);    //BGR 컬러이미지를 GRAY 흑백이미지로 변환
        cvShowImage("video", blackImage);    //윈도우에 이미지 표시
 
 
        if (cvWaitKey(10> 0) {
            break;
        }
    }
 
 
    //cvReleaseCapture(해제할 동영상) : 메모리에서 동영상 해제
    cvReleaseCapture(&video);    //resource 해제
    cvReleaseImage(&blackImage);
}
cs



결과

흑백 영상이 재생된다



'IT > - 프로그래밍' 카테고리의 다른 글

OpenCV 동영상 저장하기  (0) 2017.05.14
OpenCV 동영상에서 에지 검출하기  (0) 2017.05.13
OpenCV 동영상 재생하기  (0) 2017.05.11
OpenCV 침식연산, 팽창연산의 확장  (0) 2017.05.10
OpenCV 침식연산 예제  (0) 2017.05.04

동영상 재생하기



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *frameImage;
    //cvCaptureFromFile(파일명) : 동영상 파일 불러오기
    CvCapture *video = cvCaptureFromFile("D:/study/testmedia.mov");
 
 
    cvNamedWindow("video", CV_WINDOW_NORMAL);    //create window
 
 
    //무한루프로 프레임 돌리며 이미지 구해서 재생
    while (1) {
        //cvGrabFrame(동영상) : 하나의 프레임을 잡음
        cvGrabFrame(video);
 
        //cvRetrieveFrame(동영상) : 잡은 프레임으로부터 이미지를 구함
        frameImage = cvRetrieveFrame(video);
 
        if (!frameImage) {    break;    }
        cvShowImage("video", frameImage);    //윈도우에 이미지 표시
 
 
        if (cvWaitKey(10> 0) {
            break;
        }
    }
 
 
    //cvReleaseCapture(해제할 동영상) : 메모리에서 동영상 해제
    cvReleaseCapture(&video);    //resource 해제
    cvReleaseImage(&frameImage);
}
cs



결과

동영상이 재생된다



+ Recent posts