首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用模板序列编译Mat行(c++、Opencv)

用模板序列编译Mat行(c++、Opencv)
EN

Stack Overflow用户
提问于 2013-09-23 11:26:36
回答 1查看 135关注 0票数 0

我的问题很复杂:

我有画图图像。而不是通过像素:

代码语言:javascript
复制
for (i=0; i<image.rows; ++i)
    {
        pixel = image.ptr<uchar>(i);
        for (j=0; j<image.cols; ++j)
        {
            int p = pixel[j];

并将放在行中,例如,下一个序列:

0 0 0 255 255 255 0 0 0 255 255 255 0 0 0.0 0 0

我需要与当前值if (p == pixel[j++])相同的每个值的计数量,然后得到下面的内容:

代码语言:javascript
复制
               13 6 10 4 3 4

其中:

13 =像素值变化前0的数量

6=像素值变化前255值的数量

10 =像素值变化前的下一个0的数量

4=像素值变化前255值的数量

3=像素值变化前下0的数量

4=像素值变化前255值的数量

等等..。

我认为使用下一个算法:检查,是下一个像素值的行与当前值相同。如果“是”--将此值与next相加,如果"no“=重置为零,并在下一个值更改之前再次求和。

我试着做一些类似于next的事情:int x = x + pixel[j++];,但是结果并不好--需要帮助!

我需要在行中找到模板序列:

13 6 10 4 3 4

我要减去电流值,然后是: 13-6,6-10,10-4,4-3,3-4,得到正负值的结果。例如,如果"TRUE“--指定"1",如果"FALSE”=指定"2",则获得数字,如

1 2 1 1 2 (我的示例的结果行)

这是序列,就像我想的,在任何图像维中都是恒定的。

现在我需要找到这一行中的一个序列模板吗?

例如,我有一些独特的模板:

代码语言:javascript
复制
1 2 2,  2 2 1, 1 1 1, 2 1 1

我需要找到在结果线上遇到什么模板.它是2 1 1模板。如果列表中有匹配写入已创建模板的变量(我需要从图片的上到下一行满足的一些模板表),如果没有匹配=转到下一行。

问你的建议?谢谢你一直读到问题的结尾。

EN

回答 1

Stack Overflow用户

发布于 2013-09-23 13:28:02

诸如此类的事情也许会有所帮助:

代码语言:javascript
复制
std::vector<int> getConsecutiveElementCount(const std::vector<int>& input)
{
    std::vector<int> res;
    if (input.empty()) {
        return res;
    }
    int count = 0;
    auto last = input[0];
    for (const auto& elem : input) {
        if (elem == last) {
            ++count;
        } else {
            res.push_back(count);
            last = elem;
            count = 1;
        }
    }
    res.push_back(count);
    return res;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18958074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档