`

使用函数CVPTR2D()将指针指向中间的通道(“绿色”)

 
阅读更多

看到网上很多人使用

CvMat * Mdata;
Mdata= cvCreateMat(100,100,CV_8UC3);
//将矩阵数据赋值为0;
cvZero(Mdata);
//pData指针指向中间通道
uchar * pData = cvPtr2D(Mdata,1,0,NULL);

这个程序段来访问图像的中间通道。不解cvPtr2D函数中的第二,三个参数值分别取1,0 怎么就是指向中间通道?!

我认为它只是指向坐标(1,0)元素的第一个通道,cvPtr2D( )函数返回一个指向所需元素的指针,那么第二通道的访问代码应该是
CvMat * Mdata;
Mdata= cvCreateMat(100,100,CV_8UC3);
//将矩阵数据赋值为0;
cvZero(Mdata);
//pData指针指向中间通道
uchar * pData = cvPtr2D(Mdata,i,j,NULL)+1;

所以,对月题目:先定义一个数组,再使用函数cvPtr2D()将指针指向中间的通道(“绿色”),以给定的两个点画一个绿色的长方形的程序应该为:

复制代码
#include "cv.h"
#include "highgui.h"

int main(int argc, char** argv){
    IplImage *img;
    img = cvCreateImage(cvSize(100,100),IPL_DEPTH_8U,3);
    cvZero(img);
    //uchar* pData = cvPtr2D(img,1,0,NULL);
    //cvRectangle(img,cvPoint(20,5),cvPoint(40,20),cvScalar(0,255,0),1);
    int left = 20,top=5,right=40,bottom = 20;
    for( ;left<=right;left++)
    {
        *(cvPtr2D(img,left,top,NULL)+1)=255;
        *(cvPtr2D(img,left,bottom,NULL)+1)=255;

    }
    left=20;
    
    for( ;top<=bottom;top++)
    {
        *(cvPtr2D(img,left,top,NULL)+1)=255;
        *(cvPtr2D(img,right,top,NULL)+1)=255;

    }

    cvNamedWindow("source",CV_WINDOW_AUTOSIZE);
    cvShowImage("source",img);
    cvWaitKey(0);

    cvReleaseImage(&img);
    cvDestroyWindow("source");
}
复制代码

被注解掉的部分则是典型的错误答案。

分享到:
评论

相关推荐

    函数指针和指针函数,const的用法,指针常量,常量指针的用法

    **指针函数**是指返回值类型为指针的函数,也就是说,这个函数执行完毕后会返回一个指针,该指针可以指向任何数据类型。指针函数的定义格式如下: ``` 类型标识符 *函数名(参数表) ``` 例如: ```c int *f(int x, ...

    函数指针和指针函数

    函数指针是一个指向函数的指针变量,它存储了函数的入口地址。当我们声明一个函数指针时,需要指定它所指向的函数的类型。例如,`void (*func)()` 是一个无参数且无返回值的函数指针。在给定的示例中: ```c int (*...

    函数指针就是指向函数的指针;类成员方法指针,类具有类域操作符

    3. **typedef简化函数指针**:为了简化函数指针的使用,可以使用`typedef`创建一个别名,使得声明和使用函数指针更加直观。例如,我们可以定义一个类型`FP`,它代表了某个特定签名的函数指针,然后用这个别名来声明...

    函数指针和指针函数的区别

    例如,我们定义一个函数`int add(int a, int b)`,然后声明一个函数指针类型`int (*func_ptr)(int, int)`,最后将`add`函数的地址赋值给这个函数指针,像这样:`func_ptr = &add;`。之后,我们可以通过`(*func_ptr)...

    Keil C51中函数指针的使用

    在Keil C51中,函数指针的使用可以分为三种情况:指向固定地址的指针、无参数的函数指针和带参数的函数指针。 首先,指向固定地址的指针可以通过如下代码实现: ```c int main(void) { ( (void (*)(void)) 0x2000...

    函数指针和指针函数的理解

    **函数指针**指的是指向函数的指针变量,它存储的是函数的入口地址。当我们想要在运行时动态地选择调用哪个函数时,函数指针就显得非常有用。例如,我们可以将函数指针作为参数传递给其他函数,这样可以在运行时决定...

    指针函数和函数指针有什么区别.txt

    题目中的另一个示例展示了如何使用函数指针: ```cpp #include "stdio.h" int max(int x, int y) { return (x &gt; y ? x : y); } int main() { int (*ptr)(); int a, b, c; ptr = max; // 将max函数的地址赋给...

    指针进阶之函数指针和函数指针数组

    函数指针是指向函数的指针,它可以用来存放函数的地址,并且可以通过函数指针来调用函数。函数指针的定义方式与数组指针类似,但函数指针的类型是指向函数的类型。 2. 回忆函数 回忆一下我们之前说的函数,写一个...

    C/C++ 函数指针的意义,函数指针的用法

    函数指针最直观的应用之一是将其作为普通变量使用,可以存储函数地址,随后通过该指针调用函数。例如: ```cpp int(*fp)(int a); fp = test; // 将函数test的地址赋给函数指针fp cout (5) |" (*fp)(10) ; ``` 这里...

    c语言函数指针和指针函数.pdf

    在使用函数指针时,需要注意函数指针和它指向的函数的参数个数和类型必须是一致的,同时函数指针的类型和函数的返回值类型也必须是一致的。 函数指针的应用非常广泛,例如在回调函数、事件处理、函数式编程等领域都...

    函数指针和woid指针详解.pdf

    在C语言中,函数指针可以分为两类:一种是指向普通函数的指针,另一种是指向成员函数的指针。指向普通函数的指针可以直接调用该函数,而指向成员函数的指针需要通过对象来调用成员函数。 Void指针是C语言中的一种...

    指针函数和函数指针 C++代码

    已知每个函数在编译的时候,系统会分配给函数一个入口地址,函数名表示这个入口地址,定义指向函数的指针变量称之为函数的指针变量。 函数返回值可以是 int char float等,当然也可以是地址值,那么函数返回值是地址...

    指向函数的指针

    详细介绍了指向函数的指针 是如何实现的。

    c++ 函数指针和回调的使用

    例如,我们可以定义一个通用的回调函数接口,让所有继承自该接口的类都提供一个特定签名的纯虚函数,然后使用指向这个接口的指针来调用不同类的成员函数。 ```cpp class CallbackInterface { public: virtual ~...

    KeilC51中函数指针的使用

    - 将参数封装进结构体中,然后将指向该结构体的指针作为参数传递给函数指针。 - 使用`reentrant`关键字将函数声明为可重入函数,这样可以在函数内部处理更多的参数。 #### 分析调用树正确使用指针函数 Keil C51...

    函数指针的详解

    在声明了函数指针后,我们需要将函数的地址赋给该指针,然后才能通过该指针来调用函数。例如: ```c int add(int x, int y) { return x + y; } int main() { int (*func_ptr)(int, int) = add; // 函数指针赋值 ...

    【C语言指针】深入浅出:指针与取值、数组、函数; 详细剖析:指针函数、函数指针、指针数组、数组指针、双重指针、指针与动态内存分配

    详细剖析:指针函数、函数指针、指针数组、数组指针、双重指针、指针与动态内存分配 个人总结要点: 本质: 地址要用指针来存储,指针是用来存储地址的!!! 重难点: 指针指向的地址,也就是指针存储的地址!!...

    函数指针与指针函数

    ### 函数指针与指针函数详解 在深入探讨函数指针与指针函数之前,我们首先需要理解几个基础概念:变量、数组、指针以及它们之间的关系。 #### 变量与指针 变量是在内存中分配的一个存储区域,用于存放特定类型的...

    关于C++中函数指针的使用(包含对typedef的分析).txt

    然后使用`typedef`定义了一个指向`CA`类成员函数的指针类型`PTRMEMFUN`,并通过成员函数指针`pMemFun`调用了`lcFun`函数。 #### 五、总结 通过本文档的学习,我们可以了解到函数指针的基本概念以及其在C++中的应用...

Global site tag (gtag.js) - Google Analytics