Изменить цвет

Для начала нужно получить маску с нужными пикселями для изменения тона

IplImage cvInRange = hsvThreshold(image, from, to);

Далее разложить изображение на нужные каналы

IplImage hsvImage = image.clone();
cvCvtColor(image, hsvImage, CV_BGR2HSV);
IplImage hChannel = cvCreateImage(cvSize, hsvImage.depth(), 1); 
IplImage  sChannel = cvCreateImage(cvSize, hsvImage.depth(), 1); 
IplImage  vChannel = cvCreateImage(cvSize, hsvImage.depth(), 1);
cvSplit(hsvImage, hChannel, sChannel, vChannel, null);

Далее нужно для канала hChannel изменить тон для нужных пикселей из маски cvInRange

cvSet(hChannel, cvScalar(newH, 0, 0, 0), cvInRange);

После можно собрать все каналы

cvMerge(hChannel, sChannel, vChannel, null, dest); 

Весь код

img = converter.convert(frame);
 
CvScalar from= cvScalar(90,0,0,0); 
CvScalar to= cvScalar(130,255,255,255); 
IplImage cvInRange = hsvThreshold(image, from, to);
 
int newH = 119;
 
IplImage image = img.clone();
CvSize cvSize = cvGetSize(image);
IplImage hsvImage = image.clone();
cvCvtColor(image, hsvImage, CV_BGR2HSV);
IplImage hChannel = cvCreateImage(cvSize, hsvImage.depth(), 1); 
IplImage  sChannel = cvCreateImage(cvSize, hsvImage.depth(), 1); 
IplImage  vChannel = cvCreateImage(cvSize, hsvImage.depth(), 1);
cvSplit(hsvImage, hChannel, sChannel, vChannel, null);
 
cvSet(hChannel, cvScalar(newH,0,0,0), cvInRange);
            
IplImage dest = image.clone();
cvCvtColor(image, dest, CV_BGR2HSV);
 
cvMerge(hChannel, sChannel, vChannel, null, dest);
cvCvtColor(dest, img, CV_HSV2BGR);
 
canvasFrame.showImage(converter.convert(img));
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: