【问题标题】:opencv how to create hsv format matopencv如何创建hsv格式垫
【发布时间】:2018-06-25 05:03:54
【问题描述】:

例如,我创建

Mat mat1 = Mat::zeros(Size(100, 100), CV_8UC3);

并用 (0, 255, 255) 填充每个像素,在 hsv 中应该是红色的。

但是,如果我显示这个垫子,它将被打印为 BGR 图像并且不是红色的。

如何使这个 mat hsv 格式和设置 (0, 255, 255) 变成红色?

【问题讨论】:

    标签: c++ opencv rgb hsv opencv3.1


    【解决方案1】:

    imshow 假定您传递给它的图像在 BGR 颜色空间中。但是,您可以创建一个小函数来处理您的 imshow 的 HSV 图像。

    void imshowHSV(std::string& name, cv::Mat& image)
    {
      cv::Mat hsv;
      cv:cvtColor(image, hsv, CV_HSV2BGR);
      cv::imshow(name, hsv);
    }
    

    但要小心!这将转换并创建图像的副本,如果你过度使用它可能会有相当多的开销:)

    【讨论】:

    • 你不必反过来转换它,例如。 G。 CV_HSV2BGR? Mat 本身并不关心色彩空间,它只保存数字。我们可以放任何我们想要的东西(比如HSV)。如果imshow 将它们视为BGR 值,结果会看起来错误,因此我们将它们转换为BGR,然后将BGR 视为BGR,看起来正确。
    • @Headcrab 是的,这是相反的 XD 我写得很快,犯了这个错误,谢谢你的评论,我会马上修复它
    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多