Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将一个像素从颜色空间转换为另一个_C++_Opencv - Fatal编程技术网

C++ 将一个像素从颜色空间转换为另一个

C++ 将一个像素从颜色空间转换为另一个,c++,opencv,C++,Opencv,如何将一个像素从一个颜色空间转换为另一个?我发现cv::cvtColor既不接受cv::Scalar也不接受cv::Vec3f。或者换句话说,它接受它们,但会引发错误,因为它们最终将作为单通道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 s

如何将一个像素从一个颜色空间转换为另一个?我发现
cv::cvtColor
既不接受
cv::Scalar
也不接受
cv::Vec3f
。或者换句话说,它接受它们,但会引发错误,因为它们最终将作为单通道
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]);
}
cv::Vec3b将像素转换为实验室(cv::Vec3b const&src){
cv::Vec3b-src(b,g,r);
cv::Mat src_Mat(1,1,cv_8UC3);
src_mat.ptr(0)[0]=src(0);
src_mat.ptr(0)[1]=src(1);
src_mat.ptr(0)[2]=src(2);
cv::Mat dst_Mat;
cv::cvtColor(src_垫、dst_垫、cv::COLOR_BGR2Lab);
返回cv::Vec3b(dst_mat.ptr(0)[0],
dst_mat.ptr(0)[1],
dst_mat.ptr(0)[2]);
}

您可以通过RECT使用ROI:

Rect r=Rect(x,y,1,1);
Mat img2=img(r);
cvtColor(img2,img2,CV_BGR2Luv);//or any other color space

这可能也会对img进行更改

谢谢,但我的值是cv::Vec3b,而不是cv::Mat。。在标记为复制之前,它不是任何图像的一部分,请检查是否有帮助简短回答,否。。。(阿法克);D@miki我发誓我搜索了一百万次,但没有找到那个问题:D.谢谢:)