SlideShare a Scribd company logo
사용자가 업로드한 사진의 마커를 이용해
OpenCV + aruco로 일정한 형태로 만들고
영상으로 만들어 보았다.
타이틀 정하기 어렵다…
정문철(flashscope)
mail@limecolor.com
내용 요약
영상을 마커가 달린 이미지 프레임으로 만들고
서버에 업로드된 사진을
정면에서 본 것처럼 보정하고
브라우저에서 업로드된 사진들을 모아
하나의 영상으로 만들어 주는 프로젝트
몇 년 전 일본에서 진행된 Haruhi Hunting Project
전국의 광고판이나 잡지, 전단, 인터넷 광고등에 의문의 사진이 배포 됨
스마트폰으로 광고판을 찍어서 업로드를 하면
마커를 인식, 사진을 보정하여 홈페이지에서
영상의 한 프레임으로 볼 수 있습니다.
https://youtu.be/5yT8pK2NMpE
당시 이걸 보고 감명받았는데
이제 와서 직접 만들어 보기로?!
개발환경
OpenCV 3.0.0
Aruco 1.3.0
Visual Studio 2013
개발환경
OpenCV 3.0.0
Aruco 1.3.0
Visual Studio 2013
<-사실 최신 버젼이 있지만
사용법이 달라진 것 같아
간단해 보이는 구 버젼을 사용
만들어야 될 내용
- 영상을 이미지로 변환하고 마커 달기
- 마커를 인식하여 사진을 보정하기
- 보정된 사진들을 웹에서 영상처럼 재생
만들어야 될 내용
- 영상을 이미지로 변환하고 마커 달기
- 마커를 인식하여 사진을 보정하기
- 보정된 사진들을 웹에서 영상처럼 재생
가장 쉽고 간단하게 만들기 위해
작업을 다 분리하고 외부에서 호출 하는 방식으로 구성
영상을 이미지로 변환하고 마커 달기
영상을 이미지로 변환하고 마커 달기
완성 후에는 배포를 할 예정이므로
누구나 사용하기 쉽도록 제작 세팅은 GUI에서
(C# Winform)
영상을 이미지로 변환하고 마커 달기
필요한 과정
동영상의 사이즈, 재생 길이정보 획득
↓
C# GUI에서 FPS나 마커 사이즈를 설정
↓
영상을 이미지 프레임으로 변환
↓
마커 이미지 생성
↓
영상 프레임과 마커를 합성
FFProbe를 사용해서
동영상의 정보 획득
영상을 이미지로 변환하고 마커 달기
필요한 과정
동영상의 사이즈, 재생 길이정보 획득
↓
C# GUI에서 FPS나 마커 사이즈를 설정
↓
영상을 이미지 프레임으로 변환
↓
마커 이미지 생성
↓
영상 프레임과 마커를 합성
설정 내용을 xml 파일로 저장하여
다른 프로그램과 공유
영상을 이미지로 변환하고 마커 달기
필요한 과정
동영상의 사이즈, 재생 길이정보 획득
↓
C# GUI에서 FPS나 마커 사이즈를 설정
↓
영상을 이미지 프레임으로 변환
↓
마커 이미지 생성
↓
영상 프레임과 마커를 합성
FFMpeg <in> -r <fps> -f image2 <out>
으로 영상을 이미지 프레임으로 변환
영상을 이미지로 변환하고 마커 달기
필요한 과정
동영상의 사이즈, 재생 길이정보 획득
↓
C# GUI에서 FPS나 마커 사이즈를 설정
↓
영상을 이미지 프레임으로 변환
↓
마커 이미지 생성
↓
영상 프레임과 마커를 합성
aruco를 사용해 1024종류의 마커를 위에서 설정한 크기대로 생성
영상을 이미지로 변환하고 마커 달기
필요한 과정
동영상의 사이즈, 재생 길이정보 획득
↓
C# GUI에서 FPS나 마커 사이즈를 설정
↓
영상을 이미지 프레임으로 변환
↓
마커 이미지 생성
↓
영상 프레임과 마커를 합성
cv::Mat의 copyTo로 마커를 이미지의 구석에 합성
영상을 이미지로 변환하고 마커 달기
발생한 문제점
영상을 이미지로 변환하고 마커 달기
만들 수 있는 마커의 종류는 1024개…
만약 이미지의 개수가 1024개를 넘는 경우는?
영상을 이미지로 변환하고 마커 달기
Haruhi Hunting의 경우는 동일한 마커를 3군데에 설치하여
이 이미지가 몇 번째 프레임인지 구분하였지만
(총 707장이므로 문제없음)
다른 id를 가진 마커를 규칙적으로 조합해서 사용함으로
약 10억 개 이상 사용 가능하도록 개선
만들어야 될 내용
- 영상을 이미지로 변환하고 마커 달기
- 마커를 인식하여 사진을 보정하기
- 보정된 사진들을 웹에서 영상처럼 재생
마커를 인식하여 사진을 보정하기
사실 가장 핵심
마커를 인식하여 사진을 보정하기
사실 가장 핵심
잘 하려면 좀 복잡하지만
기본적으로는 엄청 간단
마커를 인식하여 사진을 보정하기
마커를 찾아서…
마커의 위치와 원하는 위치로 행렬을 구하고
적용시켜주면 끝
마커를 인식하여 사진을 보정하기
마커의 위치와 원하는 위치로 행렬을 구하고
적용시켜주면 끝
마커를 인식하여 사진을 보정하기
마커를 인식하여 사진을 보정하기
과정을 출력하면 이런 식…
마커를 인식하여 사진을 보정하기
다만 번거로운 점은 마커를 4개를 사용할 경우
정확한 위치를 알 수 있지만 3개일 경우 좌표를 만들어야 함
?
마커를 인식하여 사진을 보정하기
좌표를 얻기 위해 Top-Right, Bottom-Left의 x, y축을 잡아서…
마커를 인식하여 사진을 보정하기
선이 만나는 지점을 4번째 마커의 위치로 잡고 이미지를 계산합니다.
서버에서는(php) 사진이 업로드 되면
exec()로 사진을 전달해서 마커를 확인
마커 인식에 성공하면 db에 저장하고 끝
만들어야 될 내용
- 영상을 이미지로 변환하고 마커 달기
- 마커를 인식하여 사진을 보정하기
- 보정된 사진들을 웹에서 영상처럼 재생
기존에는 플래시를 사용해서 웹에서 플레이 한것으로 추정…
보정된 사진들을 웹에서 영상처럼 재생
보정된 사진들을 웹에서 영상처럼 재생
요즘 플래시 하면 이런 반응이지만…ㅠㅠ
보정된 사진들을 웹에서 영상처럼 재생
Flash는 Animate CC로 다시 태어났습니다!
(는 사실 그냥 canvas export 같은게 추가된… 느낌이…)
Animate CC를 써보려고 했지만…
canvas 프로젝트에서는 액션스크립트가 아니라 JS를 쓰고
이미지 로딩을 위해서는 PreloadJS를 따로 불러와서 사용을?!
보정된 사진들을 웹에서 영상처럼 재생
그래서 그냥 AnimateCC에서 사용하는 CreateJS를
직접 가지고 사용하기로… ㅇㅈㅇ;
PreloadJS로 업로드된 사진들을 불러와서…
(사진은 mysql + php로 경로를 가져 옴)
보정된 사진들을 웹에서 영상처럼 재생
보정된 사진들을 웹에서 영상처럼 재생
원하는 속도를 맞추고
이미지를 한 장씩 그려주는 것으로 끝!
보정된 사진들을 웹에서 영상처럼 재생
원하는 속도를 맞추고
이미지를 한 장씩 그려주는 것으로 끝!
(처음 써봐도 쉽게 이해할 수 있을 정도로 간단하였습니다….
(간단한 것만 사용하였지만…) 오히려 플레이 버튼 구현이 더 어려….)
그리고 완성!
https://youtu.be/RhYvYiUFsHU
업로드 노가다를 해주신 분들께 다시 한번 감사를…
테스트 당시 디지털로만 배포를 하였는데
스크린샷을 사용한 업로드는 원본이랑 마찬가지이므로 너무 깔끔하고
모니터 화면을 찍은 것은 너무 지저분하게 나오는 경우가 발생
이미지 프레임은 인쇄물로 배포를 하는것이 가장 좋은것 같습니다.
같은 프레임인 경우 업로드한 여러 사람들 중 한 장만 골라야 하는 사태가 발생…
그리고 이미지를 마커로만 판단을 하므로 얼마든지 안의 내용물은 어뷰징이 가능…
테스트 당시에는 최신 업로드가 영상에 바로 반영이 되도록 하였는데
추천 시스템을 넣거나 관리자의 수작업으로 입력을 하거나…
혹은 서버에 원본도 같이 업로드하여 OpenCV로 유사도를 측정하여
너무 원본과 흡사하거나 흡사하지 않은… 중간 정도의 값을 가진 사진을
반영하도록 해야 되지 않을까 고민을 하고 있습니다…

More Related Content

What's hot

うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
まべ☆てっく運営
 
Reactive Programming by UniRx for Asynchronous & Event Processing
Reactive Programming by UniRx for Asynchronous & Event ProcessingReactive Programming by UniRx for Asynchronous & Event Processing
Reactive Programming by UniRx for Asynchronous & Event Processing
Yoshifumi Kawai
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network EngineiPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
GMO GlobalSign Holdings K.K.
 
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
小林 信行
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発
Unity Technologies Japan K.K.
 
지대리 프로젝트
지대리 프로젝트지대리 프로젝트
지대리 프로젝트
GukHwan Ji
 
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
GMO GlobalSign Holdings K.K.
 
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
Unity Technologies Japan K.K.
 
「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方
Kouji Ohno
 
コンセプト概論~出張ヒストリア編~
コンセプト概論~出張ヒストリア編~コンセプト概論~出張ヒストリア編~
コンセプト概論~出張ヒストリア編~
pugmaniac
 
unity 軌跡
unity 軌跡unity 軌跡
unity 軌跡
Atelier Frameworks
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!
Unity Technologies Japan K.K.
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
ozlael ozlael
 
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
小林 信行
 
【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap
Unity Technologies Japan K.K.
 
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
KLab Inc. / Tech
 
Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1
Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1
Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1
Ki Hyunwoo
 
【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~
【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~
【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~
UnityTechnologiesJapan002
 
LAFS Game Design 6 - Conceptualization
LAFS Game Design 6 - ConceptualizationLAFS Game Design 6 - Conceptualization
LAFS Game Design 6 - Conceptualization
David Mullich
 

What's hot (20)

うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
 
Reactive Programming by UniRx for Asynchronous & Event Processing
Reactive Programming by UniRx for Asynchronous & Event ProcessingReactive Programming by UniRx for Asynchronous & Event Processing
Reactive Programming by UniRx for Asynchronous & Event Processing
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network EngineiPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
 
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発
 
지대리 프로젝트
지대리 프로젝트지대리 프로젝트
지대리 프로젝트
 
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
 
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
 
「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方「3Dゲームをおもしろくする技術 」のいろいろな読み方
「3Dゲームをおもしろくする技術 」のいろいろな読み方
 
コンセプト概論~出張ヒストリア編~
コンセプト概論~出張ヒストリア編~コンセプト概論~出張ヒストリア編~
コンセプト概論~出張ヒストリア編~
 
unity 軌跡
unity 軌跡unity 軌跡
unity 軌跡
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
 
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
最新Mayaを使ったUnity 5向けキャラクターセットアップセミナー&使いこなしTips
 
【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap
 
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について
 
Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1
Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1
Unreal Summit 2016 Seoul Lighting the Planetary World of Project A1
 
【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~
【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~
【Unite Tokyo 2018】XFLAG スタジオにおける資産の有効活用術 ~いかにして数万アセットを管理したか?~
 
LAFS Game Design 6 - Conceptualization
LAFS Game Design 6 - ConceptualizationLAFS Game Design 6 - Conceptualization
LAFS Game Design 6 - Conceptualization
 

Viewers also liked

CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.
CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.
CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.
flashscope
 
샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.
샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.
샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.
flashscope
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
flashscope
 
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
Devgear
 
판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템
Dongsam Byun
 
Ksug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaKsug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpa
Younghan Kim
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프
Younghan Kim
 
TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)
TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)
TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)
Taegyun Jeon
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
경원 이
 
유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기
flashscope
 
라면공장패턴
라면공장패턴라면공장패턴
라면공장패턴
Darion Kim
 
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
Darion Kim
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
Darion Kim
 
코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기
Darion Kim
 

Viewers also liked (14)

CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.
CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.
CCTV영상을 FFmpeg를 사용해서 Time Lapse로 만들어 보았다.
 
샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.
샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.
샤오미 카메라와 라즈베리파이를 이용해 하늘 사진을 찍어 sns에 올리는 봇을 만들어 보았다.
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
 
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++Builder
 
판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템
 
Ksug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaKsug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpa
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프
 
TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)
TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)
TensorFlow KR 2nd Meetup - Lightening talk (Satrec Initiative)
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
 
유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기
 
라면공장패턴
라면공장패턴라면공장패턴
라면공장패턴
 
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
 
코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기코드품질 개선을 위한 GS SHOP 고군분투기
코드품질 개선을 위한 GS SHOP 고군분투기
 

Similar to 사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.

전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
Chang W. Doh
 
Image 2 Torrent 발표자료
Image 2 Torrent 발표자료Image 2 Torrent 발표자료
Image 2 Torrent 발표자료
재영 이
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차Michael Yang
 
Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8
Juneyoung Oh
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
Minsu Park
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh
 
고성능 애니메이션 개발 기법 및 성능 최적화
고성능 애니메이션 개발 기법 및 성능 최적화고성능 애니메이션 개발 기법 및 성능 최적화
고성능 애니메이션 개발 기법 및 성능 최적화
Byung Ho Lee
 
전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011devCAT Studio, NEXON
 
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
williciousk
 
최신영화제작기술 Mit
최신영화제작기술 Mit최신영화제작기술 Mit
최신영화제작기술 Mitheeruem
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
David Lee
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
Nomad Connection, Inc.
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
Dong Chan Shin
 
Graduation Report
Graduation ReportGraduation Report
Graduation Report
Jongwon
 
Android mediacodec
Android mediacodecAndroid mediacodec
Android mediacodec
Taehwan kwon
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
Jinwook On
 
피니엔진
피니엔진피니엔진
피니엔진
승우 백
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차Michael Yang
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Dong Chan Shin
 

Similar to 사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다. (20)

전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
Image 2 Torrent 발표자료
Image 2 Torrent 발표자료Image 2 Torrent 발표자료
Image 2 Torrent 발표자료
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 6일차
 
Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8Html5 canvas6 week6n7n8
Html5 canvas6 week6n7n8
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
고성능 애니메이션 개발 기법 및 성능 최적화
고성능 애니메이션 개발 기법 및 성능 최적화고성능 애니메이션 개발 기법 및 성능 최적화
고성능 애니메이션 개발 기법 및 성능 최적화
 
전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011전형규, Vertex Post-Processing Framework, NDC2011
전형규, Vertex Post-Processing Framework, NDC2011
 
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
 
최신영화제작기술 Mit
최신영화제작기술 Mit최신영화제작기술 Mit
최신영화제작기술 Mit
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
Graduation Report
Graduation ReportGraduation Report
Graduation Report
 
Android mediacodec
Android mediacodecAndroid mediacodec
Android mediacodec
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
 
피니엔진
피니엔진피니엔진
피니엔진
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
 

More from flashscope

Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.
flashscope
 
Parse.com 맛보기
Parse.com 맛보기Parse.com 맛보기
Parse.com 맛보기
flashscope
 
안드로이드 메테리얼 디자인 transition, cardview 맛보기
안드로이드 메테리얼 디자인 transition, cardview 맛보기안드로이드 메테리얼 디자인 transition, cardview 맛보기
안드로이드 메테리얼 디자인 transition, cardview 맛보기
flashscope
 
Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
flashscope
 
(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것
(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것
(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것
flashscope
 
Log4j
Log4jLog4j
Log4j
flashscope
 
리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기
flashscope
 

More from flashscope (7)

Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.
 
Parse.com 맛보기
Parse.com 맛보기Parse.com 맛보기
Parse.com 맛보기
 
안드로이드 메테리얼 디자인 transition, cardview 맛보기
안드로이드 메테리얼 디자인 transition, cardview 맛보기안드로이드 메테리얼 디자인 transition, cardview 맛보기
안드로이드 메테리얼 디자인 transition, cardview 맛보기
 
Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
Unity + Oculus Rift + LeapMotion 우주 체험 프로젝트 후기
 
(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것
(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것
(번역)서버 미경험자가 소셜 게임을 통해 알게 된 서버에 대한 것
 
Log4j
Log4jLog4j
Log4j
 
리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기
 

사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.

  • 1. 사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다. 타이틀 정하기 어렵다… 정문철(flashscope) mail@limecolor.com
  • 2. 내용 요약 영상을 마커가 달린 이미지 프레임으로 만들고 서버에 업로드된 사진을 정면에서 본 것처럼 보정하고 브라우저에서 업로드된 사진들을 모아 하나의 영상으로 만들어 주는 프로젝트
  • 3. 몇 년 전 일본에서 진행된 Haruhi Hunting Project
  • 4. 전국의 광고판이나 잡지, 전단, 인터넷 광고등에 의문의 사진이 배포 됨
  • 6. 마커를 인식, 사진을 보정하여 홈페이지에서 영상의 한 프레임으로 볼 수 있습니다. https://youtu.be/5yT8pK2NMpE
  • 7. 당시 이걸 보고 감명받았는데 이제 와서 직접 만들어 보기로?!
  • 9. 개발환경 OpenCV 3.0.0 Aruco 1.3.0 Visual Studio 2013 <-사실 최신 버젼이 있지만 사용법이 달라진 것 같아 간단해 보이는 구 버젼을 사용
  • 10. 만들어야 될 내용 - 영상을 이미지로 변환하고 마커 달기 - 마커를 인식하여 사진을 보정하기 - 보정된 사진들을 웹에서 영상처럼 재생
  • 11. 만들어야 될 내용 - 영상을 이미지로 변환하고 마커 달기 - 마커를 인식하여 사진을 보정하기 - 보정된 사진들을 웹에서 영상처럼 재생
  • 12. 가장 쉽고 간단하게 만들기 위해 작업을 다 분리하고 외부에서 호출 하는 방식으로 구성 영상을 이미지로 변환하고 마커 달기
  • 13. 영상을 이미지로 변환하고 마커 달기 완성 후에는 배포를 할 예정이므로 누구나 사용하기 쉽도록 제작 세팅은 GUI에서 (C# Winform)
  • 14. 영상을 이미지로 변환하고 마커 달기 필요한 과정 동영상의 사이즈, 재생 길이정보 획득 ↓ C# GUI에서 FPS나 마커 사이즈를 설정 ↓ 영상을 이미지 프레임으로 변환 ↓ 마커 이미지 생성 ↓ 영상 프레임과 마커를 합성 FFProbe를 사용해서 동영상의 정보 획득
  • 15. 영상을 이미지로 변환하고 마커 달기 필요한 과정 동영상의 사이즈, 재생 길이정보 획득 ↓ C# GUI에서 FPS나 마커 사이즈를 설정 ↓ 영상을 이미지 프레임으로 변환 ↓ 마커 이미지 생성 ↓ 영상 프레임과 마커를 합성 설정 내용을 xml 파일로 저장하여 다른 프로그램과 공유
  • 16. 영상을 이미지로 변환하고 마커 달기 필요한 과정 동영상의 사이즈, 재생 길이정보 획득 ↓ C# GUI에서 FPS나 마커 사이즈를 설정 ↓ 영상을 이미지 프레임으로 변환 ↓ 마커 이미지 생성 ↓ 영상 프레임과 마커를 합성 FFMpeg <in> -r <fps> -f image2 <out> 으로 영상을 이미지 프레임으로 변환
  • 17. 영상을 이미지로 변환하고 마커 달기 필요한 과정 동영상의 사이즈, 재생 길이정보 획득 ↓ C# GUI에서 FPS나 마커 사이즈를 설정 ↓ 영상을 이미지 프레임으로 변환 ↓ 마커 이미지 생성 ↓ 영상 프레임과 마커를 합성 aruco를 사용해 1024종류의 마커를 위에서 설정한 크기대로 생성
  • 18. 영상을 이미지로 변환하고 마커 달기 필요한 과정 동영상의 사이즈, 재생 길이정보 획득 ↓ C# GUI에서 FPS나 마커 사이즈를 설정 ↓ 영상을 이미지 프레임으로 변환 ↓ 마커 이미지 생성 ↓ 영상 프레임과 마커를 합성 cv::Mat의 copyTo로 마커를 이미지의 구석에 합성
  • 19. 영상을 이미지로 변환하고 마커 달기 발생한 문제점
  • 20. 영상을 이미지로 변환하고 마커 달기 만들 수 있는 마커의 종류는 1024개… 만약 이미지의 개수가 1024개를 넘는 경우는?
  • 21. 영상을 이미지로 변환하고 마커 달기 Haruhi Hunting의 경우는 동일한 마커를 3군데에 설치하여 이 이미지가 몇 번째 프레임인지 구분하였지만 (총 707장이므로 문제없음) 다른 id를 가진 마커를 규칙적으로 조합해서 사용함으로 약 10억 개 이상 사용 가능하도록 개선
  • 22. 만들어야 될 내용 - 영상을 이미지로 변환하고 마커 달기 - 마커를 인식하여 사진을 보정하기 - 보정된 사진들을 웹에서 영상처럼 재생
  • 23. 마커를 인식하여 사진을 보정하기 사실 가장 핵심
  • 24. 마커를 인식하여 사진을 보정하기 사실 가장 핵심 잘 하려면 좀 복잡하지만 기본적으로는 엄청 간단
  • 25. 마커를 인식하여 사진을 보정하기 마커를 찾아서…
  • 26. 마커의 위치와 원하는 위치로 행렬을 구하고 적용시켜주면 끝 마커를 인식하여 사진을 보정하기
  • 27. 마커의 위치와 원하는 위치로 행렬을 구하고 적용시켜주면 끝 마커를 인식하여 사진을 보정하기
  • 28. 마커를 인식하여 사진을 보정하기 과정을 출력하면 이런 식…
  • 29. 마커를 인식하여 사진을 보정하기 다만 번거로운 점은 마커를 4개를 사용할 경우 정확한 위치를 알 수 있지만 3개일 경우 좌표를 만들어야 함 ?
  • 30. 마커를 인식하여 사진을 보정하기 좌표를 얻기 위해 Top-Right, Bottom-Left의 x, y축을 잡아서…
  • 31. 마커를 인식하여 사진을 보정하기 선이 만나는 지점을 4번째 마커의 위치로 잡고 이미지를 계산합니다.
  • 32. 서버에서는(php) 사진이 업로드 되면 exec()로 사진을 전달해서 마커를 확인 마커 인식에 성공하면 db에 저장하고 끝
  • 33. 만들어야 될 내용 - 영상을 이미지로 변환하고 마커 달기 - 마커를 인식하여 사진을 보정하기 - 보정된 사진들을 웹에서 영상처럼 재생
  • 34. 기존에는 플래시를 사용해서 웹에서 플레이 한것으로 추정… 보정된 사진들을 웹에서 영상처럼 재생
  • 35. 보정된 사진들을 웹에서 영상처럼 재생 요즘 플래시 하면 이런 반응이지만…ㅠㅠ
  • 36. 보정된 사진들을 웹에서 영상처럼 재생 Flash는 Animate CC로 다시 태어났습니다! (는 사실 그냥 canvas export 같은게 추가된… 느낌이…)
  • 37. Animate CC를 써보려고 했지만… canvas 프로젝트에서는 액션스크립트가 아니라 JS를 쓰고 이미지 로딩을 위해서는 PreloadJS를 따로 불러와서 사용을?!
  • 38. 보정된 사진들을 웹에서 영상처럼 재생 그래서 그냥 AnimateCC에서 사용하는 CreateJS를 직접 가지고 사용하기로… ㅇㅈㅇ;
  • 39. PreloadJS로 업로드된 사진들을 불러와서… (사진은 mysql + php로 경로를 가져 옴) 보정된 사진들을 웹에서 영상처럼 재생
  • 40. 보정된 사진들을 웹에서 영상처럼 재생 원하는 속도를 맞추고 이미지를 한 장씩 그려주는 것으로 끝!
  • 41. 보정된 사진들을 웹에서 영상처럼 재생 원하는 속도를 맞추고 이미지를 한 장씩 그려주는 것으로 끝! (처음 써봐도 쉽게 이해할 수 있을 정도로 간단하였습니다…. (간단한 것만 사용하였지만…) 오히려 플레이 버튼 구현이 더 어려….)
  • 42. 그리고 완성! https://youtu.be/RhYvYiUFsHU 업로드 노가다를 해주신 분들께 다시 한번 감사를…
  • 43. 테스트 당시 디지털로만 배포를 하였는데 스크린샷을 사용한 업로드는 원본이랑 마찬가지이므로 너무 깔끔하고 모니터 화면을 찍은 것은 너무 지저분하게 나오는 경우가 발생 이미지 프레임은 인쇄물로 배포를 하는것이 가장 좋은것 같습니다.
  • 44. 같은 프레임인 경우 업로드한 여러 사람들 중 한 장만 골라야 하는 사태가 발생… 그리고 이미지를 마커로만 판단을 하므로 얼마든지 안의 내용물은 어뷰징이 가능… 테스트 당시에는 최신 업로드가 영상에 바로 반영이 되도록 하였는데 추천 시스템을 넣거나 관리자의 수작업으로 입력을 하거나… 혹은 서버에 원본도 같이 업로드하여 OpenCV로 유사도를 측정하여 너무 원본과 흡사하거나 흡사하지 않은… 중간 정도의 값을 가진 사진을 반영하도록 해야 되지 않을까 고민을 하고 있습니다…