【发布时间】:2016-02-28 02:41:00
【问题描述】:
我在理解如何正确使用矩阵类型进行从 rgb 到 lms 颜色空间与 opencv 的颜色转换时遇到问题。我找到的论文是here。我想要做的只是计算 lms 颜色三元组如下:
Mat actRGBVec = new Mat(1,3,Imgproc.COLOR_RGB2BGR);
Mat lmsResVec = new Mat(1,3,CvType.CV_64FC3);
lmsMat = new Mat(inputImg.rows(),inputImg.cols(),CvType.CV_64FC3);
// iterate through all pixels and multiply rgb values with the lms transformation matrix
try {
for (int x = 0; x < inputImg.rows(); x++) {
for (int y = 0; y < inputImg.cols(); y++) {
actRGBVal = inputImg.get(x, y);
// vector holding rgb info
actRGBVec.put(0, 0, actRGBVal);
Core.gemm(lmsTransformMat, actRGBVec, 1, null, 0, lmsResVec, 0);
lmsMat.put(x, y, lmsResVec.get(0, 0));
}
}
}
catch (Exception e) {
Log.d("ImageHandler","Error rgb to lms conversion! " + e.getMessage());
}
lmsMat 是 CV_64FC3 类型。 inputImg 的类型为 Imgproc.COLOR_RGB2BGR。 lmsTransformMat 是 CV_64FC1 类型(因为它只包含标量值,这应该是正确的类型?)。
异常说:错误 rgb 到 lms 转换!无效的 我在这里做错了什么?
【问题讨论】: