我有一个图像,我把它分成三个独立的通道(B,G,R)。我只想操纵红色波段,然后重新合并到蓝色和绿色波段,重新组合图像。不过,我的函数中一直有一个sig abort。这个
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++){
pixel = band.at<Vec3b>(i,j)[0];
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);
while(true){
redBandsAdjusted = ImageEnhancement(Bands[2]);
vector<Mat> channels = {Bands[0],Bands[1],redBandsAdjusted};
merge(channels,merged);
}