2
我會對圖像使用伽馬校正。 所以,我必須用G = 0.6來激發我的源圖像的每個像素強度。 我有問題導致目標圖像完全錯誤。 也許我從源圖像中獲取像素時遇到了投射問題。 這裏我的代碼:帶有pow的伽瑪校正
#include <opencv2/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
Mat src = imread("spine1.jpeg");
Mat dst = Mat(src.rows, src.cols, CV_8UC1);
cvtColor(src, src, CV_8UC1);
dst = Scalar(0);
for (int x = 0; x < src.rows; x++) {
for (int y = 0; y < src.cols; y++) {
int pixelValue = (int)src.at<uchar>(x, y);
dst.at<uchar>(x, y) = pow(pixelValue, 0.6);
}
}
namedWindow("Input", CV_WINDOW_AUTOSIZE);
namedWindow("Output", CV_WINDOW_AUTOSIZE);
imshow("Input", src);
imshow("Output", dst);
waitKey(0);
return 0;
}
編輯:改變cvtColor(src, src, CV_8UC1);
在cvtColor(src, src, COLOR_BGR2GRAY);
你不是在這個代碼中使用'pow'什麼...你真的想在這裏做什麼?順便說一句,'cvtColor'是錯誤的! 'cvtColor(src,src,COLOR_BGR2GRAY);' – Miki
對不起,我複製了錯誤的代碼。我編輯它 – Vito
是的!這是錯誤!謝謝。 – Vito