When will you grow up?

1_1.setFromPixels()를 이용한 픽셀 색상을 바꿔 사각형 그리기 본문

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);
}





결과!


결론: 원하는 각 좌표에 픽셀값을 얻어와 색상값을 집어넣어서 표현을 할수있다!!!


Comments