《学习OpenCV》练习题第三章第三题

#include <highgui.h>
#include <cv.h>
#include <stdio.h>

#pragma comment (lib,"opencv_calib3d231d.lib")
#pragma comment (lib,"opencv_contrib231d.lib")
#pragma comment (lib,"opencv_core231d.lib")
#pragma comment (lib,"opencv_features2d231d.lib")
#pragma comment (lib,"opencv_flann231d.lib")
#pragma comment (lib,"opencv_gpu231d.lib")
#pragma comment (lib,"opencv_haartraining_engined.lib")
#pragma comment (lib,"opencv_highgui231d.lib")
#pragma comment (lib,"opencv_imgproc231d.lib")
#pragma comment (lib,"opencv_legacy231d.lib")
#pragma comment (lib,"opencv_ml231d.lib")
#pragma comment (lib,"opencv_objdetect231d.lib")
#pragma comment (lib,"opencv_ts231d.lib")
#pragma comment (lib,"opencv_video231d.lib")

/*
 *《学习OpenCV》第三章第三题
 * 完成时间:1:34 3/2 星期六 2013
 */

#define ROWS 400  // 矩阵行数
#define COLS 400  // 矩阵列数

// 定义绿色长方形的两个顶点
CvPoint point1 = cvPoint(80, 20);
CvPoint point2 = cvPoint(160, 80);

// Help function
// 检查当前点是否在要画的长方形区域内
bool isThePointInRectangle(int x, int y)
{
	if( (x <= point2.x) && (y <= point2.y) 
		& (x >= point1.x) && (y >= point1.y))
		return true;
	else 
		return false;
}

int main()
{
	// 三通道的二维字节类型矩阵
	CvMat* mat = cvCreateMat(ROWS, COLS, CV_8UC3);

	// 将所有数值初始化为零 
    cvZero(mat);
	// 获得矩阵元素(0,0)的指针
	uchar *p = (uchar*)cvPtr2D(mat, 0, 0);
	// 为矩阵赋值,画长方形
	for(int i = 0; i < mat->cols; i++)
	{
		for(int j = 0; j < mat->rows; j++)
		{
			p = (uchar*)cvPtr2D(mat, i, j);
			// 使其指向中间的通道
			p++;
			if(isThePointInRectangle(i, j) == true)
			{
				*p = 255;
			}
			p++;
		}
	}

	cvShowImage("img", mat);
	cvWaitKey(0);

	cvReleaseMat(&mat);
	cvDestroyAllWindows(); 

	return 0;
}

运行结果:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值