이미 하나의 채널 행렬을 가지고 있으며 (표시) 0과 1 사이의 그 값을 확장하려면 노력이 하나
cv::Mat mat2gray(cv::Mat inMat)
{
//idea: to be scaled between 0 and 1, compute for each value: val := (val - minVal)/(maxVal-minVal)
if(inMat.channels() != 1) std::cout << "mat2gray only works for single channel floating point matrices" << std::endl;
// here we assume floating point matrices (single/double precision both ok)
double minVal, maxVal;
cv::minMaxLoc(inMat, &minVal, &maxVal);
cv::Mat scaledMat = inMat.clone();
scaledMat = scaledMat - cv::Mat(inMat.size(), inMat.type(), cv::Scalar(minVal));
scaledMat = ((1.0)/(maxVal-minVal))*scaledMat;
return scaledMat;
}
이 매트의 입력 형식 것입니다 ? 'c5.at '는 이중 값을 가진 채널이 두 개 있다는 것을 의미합니다 (c5를 의미하는 경우). '그레이 스케일 이미지로 스케일링'이란 무엇을 의미합니까? 그레이 스케일 이미지는 하나의 채널입니다. 해당 채널에 부동 소수점 또는 이중 값이있는 경우 0에서 1 사이의 값으로 조정하여 검정색 (0)에서 흰색 (1)으로 표시해야합니다. 대신에 컬러 이미지를 그레이 스케일 이미지로 변환하려면 입력 형식이 무엇입니까? –
Micka
죄송 합니다만, 저는 openCV로 시작하고 있다고 말하지 않았습니다. 내 입력 행렬은 단일 채널 이미지이며 c5.at (i, j) = value; 잘못된 것일 수 있습니다. –
madhurayavarapu
질문에 대한 답변 "그레이 스케일 이미지로 크기를 조정합니까?" 평균. (int i = 0; i
madhurayavarapu