c++ - OpenCV:如何迭代图像特定区域中的每个像素

标签 c++ opencv pixel

我有一张图片(见下文),上面标有两条平行的绿线。该图像在 C++ 的 OpenCV Mat 中读取,绿线的斜率及其到图像中心的距离是已知的。

现在我想遍历这两条绿线之间区域中的所有像素。我怎么解决这个问题?如果有人能给我一个代码示例,那将非常有帮助。

非常感谢。

Example Image

最佳答案

斜率的公式如下:

y = mx + b

因为你有两个,你应该有两个斜率公式:

y1 = m1x1 + b1
y2 = m2x2 + b2

m1, m2, b1, b2 应该是已知的。

您所要做的就是从 y1 = 0y2 = 0 开始,然后在 x1x2< 之间迭代 对于每个 y1 = y2 从上到下。

示例代码:

for (int y = 0; y < imageHeight; ++y)
{
    int x1 = (y - b1) / m1;
    int x2 = (y - b2) / m2;

    for (int x = x1; x < x2; ++x)
    {
        // Do something.
    }
}

关于c++ - OpenCV:如何迭代图像特定区域中的每个像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36970099/

相关文章:

c - opencv中使用c的边界框

opengl - OpenCV 2.2窗口在OpenGL上引起问题

css - webkit 呈现边框的最后一个像素 :1px dotted; oddly

c++ - 转换 xchar* std::string

c++ - 如何在 C++ 中将整个文件读入 std::string?

c++ - 一个对象什么时候可以有一个但不是两个非零大小,一个或多个字节的存储空间?

css - 我如何指定 CSS 像素

c++ - 从链表末尾移除 0

输入图像类型上的 opencv 错误应为 CV_8UC3 或 CV_8UC4

Android:Alpha 200 位图上出现奇怪的绿色像素