image - OpenCV图像指针无法按预期工作

标签 image pointers opencv

因此,我必须对图像的一部分进行一些操作。该操作无关紧要(我完全不更改此代码),但是我创建指针的方式会更改我得到的结果。我不明白为什么会这样。

为什么这段代码会得到我想要的结果:

for(int row = 0; row < 70; ++row) {
    for(int col = 48; col < 208; ++col) {
        uchar* p = c.ptr(row+col);
        *p = (1-circuloBinario.at<unsigned char>(row,col-48))*(*p) + circuloBinario.at<unsigned char>(row,col-48)*limite;
    }
}

而这个不?
for(int row = 0; row < 70; ++row) {
    uchar* p = c.ptr(row+48);
    for(int col = 48; col < 208; ++col) {
        *p = (1-circuloBinario.at<unsigned char>(row,col-48))*(*p) + circuloBinario.at<unsigned char>(row,col-48)*limite;
         p++;
    }
}

顺便说一句,第二个代码没有任何错误,问题是我得到的结果不是我所期望的(它从大于0的行开始修改图像,从0而不是48列开始)。

谢谢。

最佳答案

Mat::ptr返回指向指定矩阵的指针。

请参阅此处的文档:http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-ptr

因此c.ptr(row+col)c.ptr(row+48)都没有意义,因为您只应将行索引传递给ptr函数。

关于image - OpenCV图像指针无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410654/

相关文章:

Javascript HTML图像源没有改变

c++ - 视频对象链表插入函数

c++ - 来自 openCV 的 imread 使图像变暗

OpenCV:GPU 上的 3D 矩阵

php - 如何显示存储在 Mysql 数据库中的具有特殊日期而不是 id 的图像 (php)

Javascript – 在不同间隔的图像之间切换

image - 调整大小时背景图像不适合浏览器

c++ - 在没有用户输入的情况下创建动态对象

c++ - 指针和双向链表

opencv - Mat或vector <Point2f>类型中的哪一种类型更适合与函数EstimateRigidTransform()使用?