OpenCV学习的那些"小"知识

判断图片是否加载成功

学习图像处理第一步就是载入图片,有时候路径错误或者图片不存在,需要判断是否载入成功。
方法一:通过判断Mat 类对象的 empty(),如果数组中没有elements,则返回 true。
int main() 
{
	
	Mat srcImage;
	srcImage= imread("D:/Lena.jpg");
	//数组有没有 elemens,则返回 true
	if (srcImage.empty())
	{
		cout<< "could not load the Image!"<<endl;
		return -1;
	}
	namedWindow("Lena");
	imshow("Lena",srcImage);
	waitKey(0);
	return 0;
}
方法二:如果图像加载成功,则Mat 类对象的成员函数 data 中不为 0。
int main() 
{
	
	Mat srcImage;
	srcImage= imread("D:/Lena.jpg");
	//数组有没有 elemens,则返回 false
	if (!srcImage.data)
	{
		cout<< "could not load the Image!"<<endl;
		return -1;
	}
	namedWindow("Lena");
	imshow("Lena",srcImage);
	waitKey(0);
	return 0;
}

绘制矩形的两种方法

刚开始学习时候,只知道一种对角点绘制办法,还有一种点(左上角)和宽、高的方法。
int main() 
{
	Mat srcImage;
	srcImage= imread("D:/Lena.jpg");
	//数组有没有 elemens,则返回 false
	if (!srcImage.data)
	{
		cout<< "could not load the Image!"<<endl;
		return -1;
	}
	//对角点画矩形
	rectangle(srcImage,Point(srcImage.cols / 4,srcImage.rows / 4),Point(srcImage.cols*3/4 ,srcImage.rows*3 / 4),Scalar(255,0,0),2,LINE_8,0);
	//一点两线画矩形
	rectangle(srcImage,Rect(srcImage.cols / 2,srcImage.rows / 2,srcImage.cols /4,srcImage.rows /4),Scalar(0,255,0),2,LINE_AA,0);
	namedWindow("Lena");
	imshow("Lena",srcImage);
	waitKey(0);
	return 0;
}
注意:一点两线绘制矩形,点必须是左上角的点的坐标。
	Rect box;
	box.x = srcImage.cols / 2;
	box.y = srcImage.rows / 2;
	box.width = srcImage.cols /4;
	box.height = srcImage.rows /4;
	rectangle(srcImage,box,Scalar(0,255,0),2,LINE_AA,0);

waitkey()介绍

WaitKey(int delay) 指延时delay ms的时间。
在图像显示中,在函数imshow()后边加上 waitkey(0),表示程序停在此处等待,delay>0时,延迟"delay"ms,在显示视频时这个函数是有用的,用于设置在显示完一帧图像后程序等待"delay"ms再显示下一帧视频;如果使用cvWaitKey(0)则只会显示第一帧视频。
在写鼠标操作程序中,部分程序如下
	while(1)
	{
		srcImage.copyTo(tempImage);
		if(g_bDrawingBox) DrawRectangle(tempImage,g_rectangle);
		imshow(WINDOW_NAME,tempImage);
		waitKey(30);//没有加这个语句
	}
没有添加waitKey这个语句,导致图像的显示不正常(在图像上,鼠标一直转圈圈)。可能 是显示太快了,没有延时一段时间。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值