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