seunghyun Note
Painterly rendering with CPP, opencv 본문
728x90
반응형
👾 painterly rendering : 사진을 사람이 그린 그림처럼 바꿔주는 기법
🤖 resource
- opencv
#include<opencv2/opencv.hpp>
- 구조체 선언
typedef struct Point {
int x;
int y;
struct Point* link;
}Point;
//stroke 형 구조체 선언
typedef struct Stroke {
int r; // 원의 반지름
Point* pt; // point 구조체를 불러옴
CvScalar g; // 색상값을 저장
struct Stroke* link; // 다음 값을 가르키는 링크
}Stroke;
- 논문의 의사코드를 활용
- Linked List, Stack Data structure
Point* pushPoint(Point* head, int x, int y) { // (x, y)좌표를 저장하는 함수 (연결 리스트형 스택 자료구조 활용)
Point* temp; // 임시 포인터 변수를 만듬
temp = (Point*)malloc(sizeof(Point)); // 저장공간 할당
temp->x = x; // x값 대입
temp->y = y; // y값 대입
temp->link = NULL; // 다음 연결 노드가 없다는 표시
... 생략 ..
return head;
}
-base Canvas Function
Stroke* paintCanvas(Stroke* head, IplImage* canvas, int mode) { // 논문상의 canvas 이미지에 색칠하는 함수
... 생략 ...
}
- 곡선, 주변값들의 좌표값 저장
- 로컬상의 파일을 불러오기
result
728x90
반응형