最近在看learning OpenCV自己试着把习题做了一下 对自己学习的一个总结 有什么不对的地方或者更好的实现程序希望大家指出 “opencv中文网站”是相当强大的网站。 第3题: #include "stdafx.h" #include "cv.h" #include "highgui.h" //#include <math.h> #include <stdio.h> // #include <stdlib.h> //============================================= // // 创建矩阵并且转换成图像显示 // //============================================== int _tmain(int argc, _TCHAR* argv[]) { //创建空白的图像内存 IplImage * img; img = cvCreateImage(cvSize(100,100),IPL_DEPTH_8U,3); //创建矩阵 大小为100*100,三通道的二维字节类型CV_8UC3 CvMat * Mdata; Mdata= cvCreateMat(100,100,CV_8UC3); //将矩阵数据赋值为0; cvZero(Mdata); //pData指针指向中间通道 uchar * pData = cvPtr2D(Mdata,1,0,NULL); //画出指定大小的绿色长方形 cvRectangle(Mdata,cvPoint(20,5),cvPoint(40,20),cvScalar(0,255,0),1); //将数据Mat转换成图像IpImage cvCopy(Mdata,img,NULL); //显示图像 cvNamedWindow("Source"); cvShowImage("Source",img); cvWaitKey(0); cvDestroyWindow("Source"); cvReleaseImage(&img); return 0; } 第4题: #include "stdafx.h" #include"cv.h" #include "highgui.h" //============================================= // // 创建指定大小的图像 并在该图像中的指定区域绘制绿色平面 // //============================================== int _tmain(int argc, _TCHAR* argv[]) { IplImage * img; img = cvCreateImage(cvSize(100,100),IPL_DEPTH_8U,3); cvZero(img); //设置感兴趣区域 cvSetImageROI(img,cvRect(20,5,20,15)); //对区域进行操作 绿色平面 cvAddS(img,cvScalar(0,255,0),img); cvResetImageROI(img); //显示图像 cvNamedWindow("Source"); cvShowImage("Source",img); cvWaitKey(0); cvDestroyWindow("Source"); cvReleaseImage(&img); return 0; }