2. 下面这个练习是帮助掌握矩阵类型。创造一个三通道二维矩阵,字节类型,大小为100×100,并设置所有数值为0。
a. 在矩阵中使用void cvCircle(CvArr* img, CvPoint center, intradius, CvScalar color, int thickness=1, int line_type=8, int shift=0)画一个圆。
b. 使用第2章所学的方法来显示这幅图像。
#include <cv.h> #include <highgui.h> int main() { CvMat *mat = cvCreateMat(100, 100, CV_32FC3); cvZero(mat); CvSize rect = cvSize(800, 800); IplImage* image = cvCreateImage(rect, IPL_DEPTH_8U, 3); CvPoint center = cvPoint(400, 400); int radius = 400; CvScalar color = cvScalar(100, 100, 100); cvCircle(image,center, radius, color, 1, 8, 0); cvNamedWindow("main", 1); //cvNamedWindow("main1", 1); cvShowImage("mian", image); //cvShowImage("main1", mat); cvWaitKey(0); cvReleaseImage(&image); cvReleaseMat(&mat); return 0; }
3. 创建一个拥有三个通道的二维字节类型矩阵,大小为100x100,并将所有值赋为0。通过函数cvPtr2D 将指针指向中间的通道(“绿色”)。以(20,5)与(40,20)为顶点间画一个绿色的长方形。
#include <cv.h> #include <highgui.h> int main() { CvSize size = cvSize(100, 100); IplImage *image = cvCreateImage(size, IPL_DEPTH_8U, 3); cvZero(image); int left = 20; int right = 40; int top = 5; int bottom = 20; for (; top < bottom; top++) { for (; left < right; left++) { *(cvPtr2D(image, top, left)+1) = 255; //cvPtr2D 参数分别表示在当前的图中,坐标为(top,left)的位置 + 1 为绿色 ;+2 表示红色 ;+0 表示蓝色; } left = 20; } cvNamedWindow("main", 1); cvShowImage("main", image); cvWaitKey(); cvReleaseImage(&image); cvDestroyWindow("main"); return 0; }
时间: 2024-10-19 19:33:27