일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝
- python 알고리즘
- #실생활 영어
- tokenizing
- opencv SURF
- #영어 명언
- python list
- #opencv
- Convolution Neural Network
- 영어명언
- #프로젝트
- keras
- word embedding
- #Android
- object detection
- 영어
- #English
- TensorFlow
- text2img
- #영어
- tensorflow update
- 완전탐색
- convexhull
- c언어
- findContours
- 이미지 생성
- #실생활영어
- #1일1영어
- #일상영어
- python __init__
- Today
- Total
When will you grow up?
3.blur()를 이용해 이미지 처리후 이미지 키보드 버튼을 이용해 이미지 저장. 본문
3.blur()를 이용해 이미지 처리후 이미지 키보드 버튼을 이용해 이미지 저장.
미카이 2016. 9. 10. 12:52기본적으로 들어가기 전에 저희는 Mat 데이터 구조에 대해 알아보겠습니다
Mat? (mat data structure)
OpenCV c++ n-차원 밀집형 배열 클래스
->기본 데이터형 외에도 openCV 에서 정의한 다양한 데이터 등을 포함시켜 만들수 있는 데이터 형
cv::Mat cvImg;
cv::Mat cvCloneImg;
등등등 이러한 형식 외에도 많은 template 형식으로 사용할수 있다.
blur()함수를 이용하여 이미지 blur 효과를 확인해보겠다
일단
blur 함수의 원형은 다음과 같다.
void blur( InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType = BORDER_DEFAULT )
이 OpenCV함수는 nomalized box filter(Homogeneous Smoothig)을 사용하여 이미지를 부드럽게 한다. nomalized box filter (kernel)은 이미 설명하였다. 입력 이미지의 모든 채널은 독립적으로 작업된다. (is proccessed)
- src – 원본 이미지 (원본 이미지의 심도는 다음중 하나의 값이어야 한다; CV_8U, CV_16S, CV_16U, CV_32F or CV_64F)
- dst – 출력 이미지 (입력이미지와 같은 크기 같은 심도를 갖는다)
- ksize – 커널의 크기
- anchor - Point(-1,-1) 값은 앵커(anchor)가 커널의 중앙에 위치 한다는 것을 의미한다. 사용자가 원하면 위치를 지정 할 수 있따.
- borderType – 사용자는 다양한 경계선(border) 보간(interpolation)메서드를 정의 할 수 있다. 적용값은 경계선의 픽셀에만 적용된다. (사용자는 다음값들을 사용 할 수 있다; BORDER_DEFAULT, BORDER_REFLECT, BORDER_REPLICATE, BORDER_TRANSPARENT, BORDER_REFLECT_101 )
kernel size를 10,10 으로 주고 테스트 해본 결과 입니다. size값이 증가하면 증가할수록 blur처리가 많이 들어감니다.
그리고 아래 는 전체 소스 코드 입니다.
기본적으로 's' 버튼을 누르면 이미지 저장이 되게 만들었으며,
photo.save("photo - blur.bmp");
함수에서 이름 및 확장자 명을 이용하여 저장시킬 수 있으며,
저장 위치는 프로젝트 -> bin ->data에 저장 됩니다.
#include "ofApp.h" const int width = 720; const int height = 480; unsigned char pixel[width*height * 3]; ofImage img, result; ofImage photo; //-------------------------------------------------------------- void ofApp::setup() { photo.load("myimage.jpg"); result.clone(photo); cvImg = cv::Mat(photo.getHeight(), photo.getWidth(), CV_8UC3, photo.getPixels().getData()); cvCloneImg = cv::Mat(photo.getHeight(), photo.getWidth(), CV_8UC3, photo.getPixels().getData()); cv::blur(cvCloneImg, cvCloneImg, cv::Size(10, 10)); //src, dst, kernel size } //-------------------------------------------------------------- void ofApp::update() { photo.update(); } //-------------------------------------------------------------- void ofApp::draw() { photo.draw(100, 100); result.draw(photo.getWidth() + 100, 100); } //-------------------------------------------------------------- void ofApp::keyPressed(int key) { switch (key) { case 's': photo.save("photo - blur.bmp"); break; } } //-------------------------------------------------------------- void ofApp::keyReleased(int key) { } //-------------------------------------------------------------- void ofApp::mouseMoved(int x, int y) { } //-------------------------------------------------------------- void ofApp::mouseDragged(int x, int y, int button) { } //-------------------------------------------------------------- void ofApp::mousePressed(int x, int y, int button) { } //-------------------------------------------------------------- void ofApp::mouseReleased(int x, int y, int button) { } //-------------------------------------------------------------- void ofApp::mouseEntered(int x, int y) { } //-------------------------------------------------------------- void ofApp::mouseExited(int x, int y) { } //-------------------------------------------------------------- void ofApp::windowResized(int w, int h) { } //-------------------------------------------------------------- void ofApp::gotMessage(ofMessage msg) { } //-------------------------------------------------------------- void ofApp::dragEvent(ofDragInfo dragInfo) { }
'02. Study > Computer Vision(openframworks&opencv)' 카테고리의 다른 글
5. ColorReduction 만들기. (0) | 2016.09.17 |
---|---|
4. BitPlane 함수 만들기(Bit-Plane Slicing) (0) | 2016.09.17 |
2.visualstdio2015에서 opencv+openframeworks 개발환경 구축 (22) | 2016.09.08 |
1_2.ofImage로 이미지를 띄워 이미지 Negative 시키기 (0) | 2016.09.08 |
1_1.setFromPixels()를 이용한 픽셀 색상을 바꿔 사각형 그리기 (0) | 2016.08.31 |