我的问题很复杂:
我有阈值图片图像。比通过像素:
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 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 255 255 255 255 0 0 0 255 255 255 255;
我需要计算每个值的数量与当前值相同,if (p == pixel[j++])
然后再看一下:
13 6 10 4 3 4
在哪里:
13 = 像素值改变前的 0 数量
6 = 像素值改变前 255 个值的数量
10 = 像素值改变前下一个 0 的数量
4 = 像素值改变前 255 个值的数量
3 = 像素值改变前下一个 0 的数量
4 = 像素值改变前 255 个值的数量
ETC....
我认为使用下一个算法:检查,行的下一个像素值是否与当前值相同。如果“是” - 将此值与下一个相加,如果“否” = 重置为零并在下一个值更改之前再次求和。
我尝试执行类似 next: 的操作int x = x + pixel[j++];
,但结果有些问题 - 需要帮助!
比我需要在行中找到模板序列:
在13 6 10 4 3 4
我想用 next: 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
模板。如果有匹配 - 在列表中写入已创建模板的变量(我需要获取一些模板的表格,这些模板从图片的顶部到底部成行),如果没有匹配 = 转到下一行。
征求你的意见?感谢您阅读到问题的结尾。