02. Study/Computer Vision(openframworks&opencv)
1_1.setFromPixels()를 이용한 픽셀 색상을 바꿔 사각형 그리기
미카이
2016. 8. 31. 18:40
도큐멘트를 보면
setFromPixels() 은 ofImage에 잡힌 이미지의 픽셀을 설정할수 있다.
이미지는 좌측 상부 모서리가 (0,0)을 기준으로 가정한다.
기본적으로 setFromPixels() 원형은 아래와 같다.
아마 함수 정의를 여러 개로 정의하여 사용자 편의를 위해 제작된거 같다.
c++ 문법이 약하신분들은
....feat->함수 오버로딩,함수 오버라이딩을 찾아서 공부해 보시면 이해가 빠를거 같다.
setFromPixels(타입,너비,높이,이미지유형);
이러한식으로 사용하시면 된다.
이미지 유형에는 아래와 같이 enum형식으로 만들어져 있다.
원하시는 것을 사용하시면 될거 같다.
이번 장에서는 너비 720 높이 480 을 기준으로 작성되었다.
ofApp.cpp를 에서 작성을 하시면 됩니다.
#include "ofApp.h" const int width = 720; //너비 720 const int height = 480; //높이 480 unsigned char pixel[width*height*3]; //3을 곱해준 이유 : RGB3가지 색상값 표현을 위해. ofImage image; int n = 0; //-------------------------------------------------------------- void ofApp::setup(){ /*for (int x = 0; x < width; x++) { pixel[x * 3] = 255; }*//* int index = 3 * (70 * width + 100); pixel[index] = 255; pixel[index + 1] = 0; pixel[index + 2] = 0;*/ //int y = 70; for (int y = 70; y < (70 + 40); y++) { for (int x = 70; x < (70 + 280); x++) { int index = 3 * (y*width + x); pixel[index] = 255; pixel[index + 1] = 0; pixel[index + 2] = 0; } } for (int y = 200; y < (200 + 20); y++) { for (int x = 200; x < (200 + 20); x++) { int index = 3 * (y*width + x); pixel[index] = 0; pixel[index + 1] = 255; pixel[index + 2] = 0; } } for (int y = 200; y < (200 + 30); y++) { for (int x = 250; x < (250 + 30); x++) { int index = 3 * (y*width + x); pixel[index] = 0; pixel[index + 1] = 0; pixel[index + 2] = 255; } } image.setFromPixels(pixel, width, height, OF_IMAGE_COLOR); }
결과!
결론: 원하는 각 좌표에 픽셀값을 얻어와 색상값을 집어넣어서 표현을 할수있다!!!