【问题标题】:How to change the color of each pixel of image using openCV [duplicate]如何使用openCV更改图像每个像素的颜色[重复]
【发布时间】:2018-05-02 17:13:44
【问题描述】:

我是 OpenCV 的新手。我有一个图像,我想要的是用任何一种颜色改变图像的每个像素的颜色。 我找到了该代码,但是当我运行这部分代码时,会生成一个异常。

for (i = 0;i < img1.rows;i++) {
    for (j = 0;j < img1.cols;j++) {
        img1.at<Vec3b>(i, j) = Vec3b(255, 105, 240);
    }
}

谁能告诉我解决方法。 或者我发现这需要花费大量时间进行转换所以如果他们有任何其他方法,请告诉我。

【问题讨论】:

  • 我没有投反对票,但你不应该抱怨某些代码给你一个错误,然后不发布错误,只发布一个不完整的片段,没有给出它可能的上下文发生。帮助中心中明确提到了有关获取错误帮助的信息。然后,您将问题改为其他内容 - “或者我发现这需要花费大量时间进行转换” - 当问题意味着单一焦点时。

标签: c++ opencv


【解决方案1】:
// Make a 3 channel image
cv::Mat img(480,640,CV_8UC3);

// Fill entire image with cyan (blue and green)
img = cv::Scalar(255,255,0);

【讨论】:

    【解决方案2】:

    您可以使用Mat::operator() 选择 roi,然后为其赋值。

    void main()
    {
        cv::Mat img = cv::Mat::ones(5, 5, CV_8UC3);
        img({2, 4}, {2, 4}) = cv::Vec3b(7, 8, 9);
        cout << img;
    }
    

    这将打印出来

    [  1,   0,   0,   1,   0,   0,   1,   0,   0,   1,   0,   0,   1,   0,   0;
       1,   0,   0,   1,   0,   0,   1,   0,   0,   1,   0,   0,   1,   0,   0;
       1,   0,   0,   1,   0,   0,   7,   8,   9,   7,   8,   9,   1,   0,   0;
       1,   0,   0,   1,   0,   0,   7,   8,   9,   7,   8,   9,   1,   0,   0;
       1,   0,   0,   1,   0,   0,   1,   0,   0,   1,   0,   0,   1,   0,   0]
    

    【讨论】:

      【解决方案3】:

      要使用单色填充图像,请使用 rectangle 和 CV_FILLED 参数。

      (可能有一些异常原因 - 未创建图像、错误的像素格式等 - 使用给定信息很难诊断问题)

      【讨论】:

      • 你是认真的吗?你读过文档吗?
      猜你喜欢
      • 2020-11-09
      • 1970-01-01
      • 2017-09-20
      • 2019-08-26
      • 1970-01-01
      • 2016-07-03
      • 2018-10-24
      • 1970-01-01
      • 2018-11-25
      相关资源
      最近更新 更多