基于opencv添加标签。

本文详细介绍使用OpenCV进行图像处理时,如何通过鼠标左键和右键实现图像区域的添加与标签结束,涵盖函数工具的使用及具体实现流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鼠标左键,开始添加标签,右键结束标签。

函数工具

bool temp_6=false;
CvPoint point;
CvFont font;
char * dis_text=(char*)"|";
IplImage * img_c_6;
void delchar(char *s, char c)
{
	int i, j, len;
	len = strlen(s);
	for (i = 0; i < len; i++) {
		if (s[i] == c) {
			for (j = i; j < len; j++)
				s[j] = s[j + 1];
			i = i - 1;
		}
	}
}
void my_mouse_callback_6(int event, int x, int y, int flags, void * para) {
	IplImage *img = (IplImage *)para;
	switch (event)
	{
	case CV_EVENT_LBUTTONDOWN:
		temp_6 = true;
		point = CvPoint(x, y);
		
		break;
	case CV_EVENT_RBUTTONDOWN:
		temp_6 = false;
		cvSetImageROI(img, CvRect(point.x, point.y - 50, 50, 100));
		cvZero(img);
		cvResetImageROI(img);
		cvCopy(img, img_c_6);
		delchar(dis_text, '|');
		cvPutText(img, dis_text, point, &font, cvScalar(255));
		dis_text =(char *)"|";
		
		printf("标签结束\n");
		break;
    }
}

函数实现:

void opencv_4_3::ans_6() {
	IplImage * img_6 = cvCreateImage(CvSize(534, 400), 8, 3);
	cvZero(0);
	cvNamedWindow("标签", CV_WINDOW_AUTOSIZE);
	cvSetMouseCallback("标签",my_mouse_callback_6,img_6);

     img_c_6 = cvCloneImage(img_6);
	cvInitFont(&font, CV_FONT_HERSHEY_SCRIPT_COMPLEX, 1.5, 1.5, 1, 1);

	
	
	while (true)
	{
		
        cvCopy(img_6, img_c_6);
		if (temp_6) {
			//puts(dis_text);
			cvPutText(img_6, dis_text,point,& font, cvScalar(255));
		}
		cvShowImage("标签", img_c_6);
		char c = cvWaitKey(15);

		if (temp_6&&c > 32 && c < 126) {
			char tempstr[2] = {c};
			if (dis_text == "|") {
				dis_text = (char *)malloc(sizeof(char) * 2);
				strcpy(dis_text, tempstr);
			}
			else
				strcat(dis_text, tempstr);
		}
		
		else if (c == 27)
			break;
	}
	
	cvDestroyWindow("标签");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值