《学习opencv》课后题:4.1.c如何显示文字标签?

使用cvputtext函数可以实现文本的添加功能:代码如下

#pragma region (exercise 4.1)

//---------------------------4.1-----------------------
//题目说明:1-读取图片,2-处理得到灰度图,3-进行canny检测,4-显示在不同图片中。5-显示文本
//-----------------------------------------------------

//头文件包含
#include<opencv\cv.h>
#include<highgui.h>

void cvText(IplImage* img, const char* text, int x, int y)
{
	CvFont font;
	cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,1.0, 1.0, 0, 2);
	CvScalar textColor = cvScalar(0, 255, 255);
	CvPoint textPos = cvPoint(x, y);
	cvPutText(img, text, textPos, &font, textColor);
}
//主函数
int main()
{
	//读取图片
	CvCapture* capture = cvCreateFileCapture("shipin.avi");
	//进行判断是否成功读入图片
	if (!capture) return -1;

	IplImage* frame = cvQueryFrame(capture);
	//创建一个空图片用来装灰度图片
	IplImage* dstImage_gray = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1);
	//创建孔图片装canny检测的图片
	IplImage* dstImage_canny = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1);
	//创建空图片放三张子图片
	IplImage* result = cvCreateImage(CvSize(frame->width * 3, frame->height), IPL_DEPTH_8U, 3);
	

	while (1)
	{
		IplImage* frame = cvQueryFrame(capture);
		//转化灰度图
		cvConvertImage(frame, dstImage_gray, 0);
		//进行canny检测
		cvCanny(dstImage_gray, dstImage_canny, 30, 100, 3);

		//创建第一个子ROI区域
		cvSetImageROI(result, CvRect(0, 0, frame->width, frame->height));
		result->nChannels = 3;
		cvCopy(frame, result);
		cvText(result, "color", 100,100);
	
		cvResetImageROI(result);
		
		

		//创建第二个子ROI区域
		cvSetImageROI(result, CvRect(frame->width, 0, frame->width, frame->height));
		result->nChannels = 1;
		cvCopy(dstImage_gray, result);
		cvText(result, "gray", 100, 100);
		cvResetImageROI(result);
		//创建第三个子ROI区域
		cvSetImageROI(result, CvRect(frame->width * 2, 0, frame->width, frame->height));
		result->nChannels = 1;
		cvCopy(dstImage_canny, result);
		cvText(result, "canny", 100, 100);
		cvResetImageROI(result);

		//显示图片
		cvNamedWindow("result");
		cvShowImage("result", result);
		if (cvWaitKey(20) == 27)
		{
			break;
		}
	}

	//等待输入
	if (cvWaitKey(20) == 27)
	{
		return -1;
	}
	return 0;
}
#pragma endregion

效果如下图:请忽略效果。你们可以根据自己的需求进行相应的更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值