У меня есть изображение, которое я разделил на три отдельных канала (b, g, r).Я хочу манипулировать только красной полосой, а затем вернуться к синей и зеленой полосе, чтобы изменить композицию изображения.Однако я продолжаю прерывать свою работу.RBandSlider
относится к глобальному int, используемому для трекбара, который по умолчанию равен 1. Почти положительный, проблема заключается в функции ImageEnhancement
.
Нужно ли мне определять redBandsAdjsuted
как что-то еще илиЯ не захватил пиксель локальный и переписал его правильно?
Mat ImageEnhancement(Mat band){
Mat adjustedBand;
Scalar mean, std;
meanStdDev(band, mean , std);
int pixel,temp;
for(int i = 0; i < band.rows;i++){
for(int j = 0; j < band.cols;j++){
//extract pixel
pixel = band.at<Vec3b>(i,j)[0];
//pixel greater than mean
if ( pixel > mean[0]){
temp = (255);
adjustedBand.at<Vec3b>(i,j) = temp;
}
else{
temp = 0;
adjustedBand.at<Vec3b>(i,j) = temp ;
}
}
}
return adjustedBand;
}
Mat Bands[3],merged,redBandsAdjusted(image.cols,image.rows,CV_8UC1),result;
split(image, Bands);
//loop the echancement adjustment
while(true){
//adjust red band and merge
redBandsAdjusted = ImageEnhancement(Bands[2]);
vector<Mat> channels = {Bands[0],Bands[1],redBandsAdjusted};
merge(channels,merged);
}