您的位置:首页 > 运维架构

学习opencv----采用Ptr2D()指向绿色通道

2013-11-09 12:41 791 查看
采用Ptr2D()指向绿色通道

《学习Opencv(中文版)》第三章练习题3:通过函数cvPtr2D将指针指向中间的通道(“绿色”)。网上给出的答案为uchar* pData=cvPtr2D(img,1,0,NULL);这一答案是错误的,此时pData指向第1行第0列的蓝色通道,uchar* pData=cvPtr2D(img,1,0,NULL)+1指向第1行第0列的绿色通道。

采用第4题验证上述结论:

(1) uchar* pData=cvPtr2D(img,1,0,NULL);

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv2/opencv.hpp>

int main()
{
//Ex4
IplImage* img=cvCreateImage(cvSize(100,110),IPL_DEPTH_8U,3);
cvZero(img);
uchar* pData=cvPtr2D(img,0,0,NULL)+1;//指向绿色通道
int i,j;
for(i=5*3*100;i<20*3*100;i=i+3*100)
{
for(j=20*3;j<40*3;j=j+3)
{
*(pData+i+j)=255;
}
}
cvNamedWindow("test",CV_WINDOW_AUTOSIZE);
cvShowImage("test",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("test");
return 0;
}



运行结果:



(2) uchar* pData=cvPtr2D(img,1,0,NULL)+1;

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv2/opencv.hpp>

int main()
{
//Ex4
IplImage* img=cvCreateImage(cvSize(100,110),IPL_DEPTH_8U,3);
cvZero(img);
uchar* pData=cvPtr2D(img,0,0,NULL)+1;//指向绿色通道
int i,j;
for(i=5*3*100;i<20*3*100;i=i+3*100)
{
for(j=20*3;j<40*3;j=j+3)
{
*(pData+i+j)=255;
}
}
cvNamedWindow("test",CV_WINDOW_AUTOSIZE);
cvShowImage("test",img);
cvSaveImage("1234.jpg",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("test");
return 0;
}
运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: