8ビットを超えるピクセル深度を保持できるopencvのデータ構造が見つからないようです。私の問題は、LDR 画像を取得し、いくつかのピクセルを乗算して、これらのピクセルの値が 255 境界を超えるようにしたいということです。これは私がこれまでに試したことです。ピクセル値を 0 ~ 255 ではなく 0 ~ 1 にマッピングしてから、それらにスカラーを掛けてみました (値を増やすため)。しかし、画像を再度書き込む必要がある場合、255 を掛けないと画像が暗くなります。助けていただければ幸いです :)
Mat ApplySunValue(Mat InputImg){
Mat OutPutImg = Mat::zeros(InputImg.rows, InputImg.cols, CV_32FC1);
for(int x = 0; x < OutPutImg.cols; x++){
for(int y = 0; y < OutPutImg.rows; y++){
int PixelValue = InputImg.at<uchar>(y,x)/255.f;
if(PixelValue < 0.9){
OutPutImg.at<uchar>(y,x) = 0;
}else{
OutPutImg.at<uchar>(y,x) = PixelValue * sunMultiplyer;
}
}
}
imwrite("/Users/K******/Desktop/EnviormentMap.jpg", OutPutImg * 255);
namedWindow("Hej", CV_WINDOW_AUTOSIZE);
imshow("Hej", OutPutImg * 255);
return OutPutImg;
}