【发布时间】:2016-03-03 07:28:13
【问题描述】:
如何将一个像素从一种颜色空间转换为另一种?我发现cv::cvtColor 不接受cv::Scalar 也不接受cv::Vec3f。或者换句话说,它接受它们但引发错误,因为它们最终将被处理为 1-Channel cv::Mat。有没有比像这样构造一个元素 cv::Mat 更好的(直接来自 cv::Scalar 或 cv::VecYX 的更干净的方式)?
cv::Vec3b covert_1_pixel_to_lab(cv::Vec3b const& src){
cv::Vec3b src(b,g,r);
cv::Mat src_mat(1, 1, CV_8UC3);
src_mat.ptr<uchar>(0)[0] = src(0);
src_mat.ptr<uchar>(0)[1] = src(1);
src_mat.ptr<uchar>(0)[2] = src(2);
cv::Mat dst_mat;
cv::cvtColor(src_mat, dst_mat, cv::COLOR_BGR2Lab);
return cv::Vec3b(dst_mat.ptr<uchar>(0)[0],
dst_mat.ptr<uchar>(0)[1],
dst_mat.ptr<uchar>(0)[2]);
}
【问题讨论】:
-
在标记为骗子之前,请检查this 是否有帮助
-
简答,不... (AFAIK) ;D
-
@miki 我发誓我搜索了百万次,但没有找到那个问题:D。谢谢:)