1. 程式人生 > >opencv中的灰度變換

opencv中的灰度變換

///////////////////////////////////////////////////////////////////// // // 灰度線性變換函式 // 引數: // src,輸入原影象 // dst,輸出影象,型別為CV_32F,大小及通道數與原影象相同 // mapping,灰度對映表,可以根據不同的變換函式,提前計算好影象的灰度對映表 // //////////////////////////////////////////////////////////////////// void gray_trans(const Mat& src, Mat& dst,float* mapping) { int channels = src.channels(); if (channels == 1) { dst = Mat(src.size(), CV_32FC1); for
(int i = 0; i < src.rows; i++) { float* p1 = dst.ptr<float>(i); const uchar* p2 = src.ptr<uchar>(i); for (int j = 0; j < src.cols; j++) p1[j] = mapping[p2[j]]; } } else if (channels == 3) { dst = Mat(src.size(), CV_32FC3); for
(int i = 0; i < src.rows; i++) { float* p1 = dst.ptr<float>(i); const uchar* p2 = src.ptr<uchar>(i); for (int j = 0; j < src.cols * 3; j+=3) { p1[j] = mapping[p2[j]]; p1[j+1] = mapping[p2[j+1]]; p1[j+2
] = mapping[p2[j+2]]; } } } }