컬러 추출후 해당 컬러 보여주기

OpenCV/my_source 2013. 9. 3. 10:20


void main() {

char * wnSrc = "src";

Mat src = imread("resizesample.tif");

if(!src.data) exit(1);

imshow(wnSrc,src);

cvSetMouseCallback(wnSrc, onMouse, &src);

waitKey(0);

}


//-------------------------------------------------------------

// 마우스 이벤트

//-------------------------------------------------------------

void onMouse(int event, int x, int y, int flags, void* param) {


Scalar rgb;

Mat *src = (Mat *)param;


switch(event) {

case CV_EVENT_RBUTTONDOWN: //오른쪽버튼 DOWN


rgb[0]= src->at<Vec3b>(y,x)[0];

rgb[1]= src->at<Vec3b>(y,x)[1];

rgb[2]= src->at<Vec3b>(y,x)[2];

cout<<"B("<<rgb[0]<<")";

cout<<"G("<<rgb[1]<<")";

cout<<"R("<<rgb[2]<<")"<<endl;


color_extraction(*src,rgb);

break;

}


imshow("src",*src);

}


//-------------------------------------------------------------

// 컬러 추출

//-------------------------------------------------------------

void color_extraction( Mat &src, Scalar rgb ) {

Mat dst, addMat;

unsigned int gap = 5;

Scalar lowerBGR, uperBGR;

lowerBGR[0] = (rgb[0] - gap);

lowerBGR[1] = (rgb[1] - gap);

lowerBGR[2] = (rgb[2] - gap);

uperBGR[0]  = (rgb[0] + gap);

uperBGR[1]  = (rgb[1] + gap);

uperBGR[2]  = (rgb[2] + gap);


inRange(src, lowerBGR, uperBGR, dst);

dilate( dst, dst, Mat() );dilate( dst, dst, Mat() );

erode( dst, dst, Mat() );

cvtColor(dst,dst,CV_GRAY2BGR);

add(src,dst,addMat);


imshow("Add",addMat);

imshow("Color_Detect Demo",dst);

}



반응형

'OpenCV > my_source' 카테고리의 다른 글

컬러 추출후 해당 컬러 보여주기2  (0) 2013.09.03
[콘솔]마우스 이벤트  (0) 2013.08.20
컬러공간 변환  (0) 2013.05.21

[콘솔]마우스 이벤트

OpenCV/my_source 2013. 8. 20. 16:57


#include "colordetecth.h"


void onMouse(int event, int x, int y, int flags, void* param);

void fun(Mat &image, Scalar rgb);


main()

void main() {

char * wnSrc = "src";

Mat src;

src = imread("sample.tif");

//src = imread("ColorCheckerChart.png");

imshow(wnSrc,src);

cvSetMouseCallback(wnSrc, onMouse, &src);

waitKey(0);

}

onMouse()

void onMouse(int event, int x, int y, int flags, void* param) {

Scalar rgb;

Mat *src = (Mat *)param;

switch(event) {

case CV_EVENT_RBUTTONDOWN: //오른쪽버튼 DOWN


rgb[0]= src->at<Vec3b>(y,x)[0];

rgb[1]= src->at<Vec3b>(y,x)[1];

rgb[2]= src->at<Vec3b>(y,x)[2];

cout<<"B("<<rgb[0]<<")";

cout<<"G("<<rgb[1]<<")";

cout<<"R("<<rgb[2]<<")"<<endl;

fun(*src,rgb);

break;

case CV_EVENT_RBUTTONUP: //오른쪽버튼 UP

break;

case CV_EVENT_RBUTTONDBLCLK: //오른쪽버튼 떠블클릭

break;

case CV_EVENT_LBUTTONDOWN: //왼쪽버튼 DOWN

break;

case CV_EVENT_LBUTTONUP: //외쪽버튼 UP

break;

case CV_EVENT_LBUTTONDBLCLK: //외쪽버튼 더블클릭

break;

case CV_EVENT_MOUSEMOVE: //마우스움직임

if(flags & CV_EVENT_FLAG_RBUTTON){

//printf("현재 마우스 좌표는 (%d, %d) 입니다.\n", x, y);

//src->at<Vec3b>(y,x) = 255;

}

break;

}

imshow("src",*src);


void fun(Mat &image, Scalar rgb) {

for(int y=0; y<image.rows; y++) {

for(int x=0; x<image.cols; x++) {

if(y<80 & x<255) {

image.at<Vec3b>(y,x)[0] = rgb[0];

image.at<Vec3b>(y,x)[1] = rgb[1];

image.at<Vec3b>(y,x)[2] = rgb[2];

}

}

}

}


반응형

'OpenCV > my_source' 카테고리의 다른 글

컬러 추출후 해당 컬러 보여주기2  (0) 2013.09.03
컬러 추출후 해당 컬러 보여주기  (0) 2013.09.03
컬러공간 변환  (0) 2013.05.21