使用模板序列(c++,Opencv)编译Mat行
Compile Mat rows with template sequence (c++, Opencv)
我的问题很复杂:
我有阈值图片图像。比通过像素:
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 0 0 0 255 255 255 2550 0 0 255 255 255 255
;我需要计算与当前值相同的每个值的数量if (p == pixel[j++])
并查看:
13 6 10 4 3 4
哪里:
13 = 像素值更改前
的数量为 06 = 像素值变化前 255 个值的数量
10 = 像素值更改前下一个 0 的数量
4 = 像素值变化前 255 个值的数量
3 = 像素值更改前下一个 0 的数量
4 = 像素值变化前 255 个值的数量
等。。。。
我认为使用下一个算法:检查,行的下一个像素值是否与当前值相同。如果"是" - 将此值与 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
模板。如果有匹配 - 在列表中写入已建立模板的变量(我需要获取一些从图片顶部到底部的行相遇的模板的表格(,如果没有匹配=转到下一行。
征求您的建议?谢谢你读到问题的最后。
这样的事情可能会有所帮助:
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;
}
相关文章:
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 尝试为 OpenCV 3.4.3 编译opencv_traincascade
- Gtk+ 3 使用 OpenCV 编译时出错
- 如何在 g++ 上使用 opencv 编译项目 c++
- 用Mac OS X Sierra上的OpenCV C 编译Hello World
- 为 OpenCV 编译 MATLAB 绑定
- OpenCV 编译错误与非自由/feature2d.hpp.
- OpenCV 2.4.2 编译"operations.hpp"问题
- Opencv 2.4 编译错误与 objectdetect.hpp.
- 使用 OpenCV 编译头文件.自己的类定义
- 在Windows下为OpenCV编译MinGW库
- Beaglebone上的OpenCV编译错误
- 在mex函数中使用OpenCV:编译后出错
- c++ opencv编译错误- Windows7 64位使用Eclipse CDT
- g++ openCV 编译错误在不存在的行上
- OpenCv编译和链接错误
- OpenCV 2.3编译问题-未定义的参考- Ubuntu 11.10
- 奇怪的opencv编译错误
- OpenCV C++/C 编译错误:未定义对 'cv::fastFree(void*)' 的引用