使用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
效果如下图:请忽略效果。你们可以根据自己的需求进行相应的更改。