我的问题很复杂:
我有画图图像。而不是通过像素:
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++])相同的每个值的计数量,然后得到下面的内容:
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 (我的示例的结果行)
这是序列,就像我想的,在任何图像维中都是恒定的。
现在我需要找到这一行中的一个序列模板吗?
例如,我有一些独特的模板:
1 2 2, 2 2 1, 1 1 1, 2 1 1我需要找到在结果线上遇到什么模板.它是2 1 1模板。如果列表中有匹配写入已创建模板的变量(我需要从图片的上到下一行满足的一些模板表),如果没有匹配=转到下一行。
问你的建议?谢谢你一直读到问题的结尾。
发布于 2013-09-23 13:28:02
诸如此类的事情也许会有所帮助:
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;
}https://stackoverflow.com/questions/18958074
复制相似问题