基于opencv4,识别字母W(C++)

本文介绍了一种基于OpenCV4的字母W识别方法,并提供源代码实现。该方法通过加载预训练的联级分类器,从视频中检测字母W的位置,并将其标记出来。

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

基于opencv4,识别字母W。
先上代码:

//读取视频,捕获w,并保存视频
#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/highgui/highgui_c.h>

using namespace cv;
using namespace std;

CascadeClassifier W_cascader;
String Wfile = "H:/VS/Opencv/program/Training_data/alphabet/letter_w_2/HaarResult/cascade.xml";    //联级分类器的地址

int main(int argc, char** argv) {
	//加载分类器
	if (!W_cascader.load(Wfile)) {
		printf("could not load file...\n");
		return -1;
	}
	namedWindow("demo-win", CV_WINDOW_AUTOSIZE);


	VideoCapture capture;
	Mat frame;
	Mat gray;
	vector<Rect>faces;
	capture.open("H:/VS/vedio/W_4.mp4");    //加载视频的地址

	capture.read(frame);

	//配置视频录制
	VideoWriter writer;
	int codec = VideoWriter::fourcc('M', 'J', 'P', 'G');  // 选择编码格式
	double fps = 25.0;  //设置视频帧率 
	string filename = "live.avi";  //保存的视频文件名称
	writer.open(filename, codec, fps, frame.size(), 1);  //创建保存视频文件的视频流

	while (capture.read(frame)) {
	cvtColor(frame, gray, COLOR_RGB2GRAY);
	equalizeHist(gray, gray);
	W_cascader.detectMultiScale(gray, faces, 1.1, 1, 0, Size(300, 300));
	for (size_t t = 0;t < faces.size();t++) {
		rectangle(frame, faces[t], Scalar(255, 0, 0), 2, 8, 0);
	}

		imshow("demo-win", frame);
		writer.write(frame);  //把图像写入视频流
		char c = waitKey(30);
		if (c == 27) { //esc
			break;
		}

	}

	//release source
	capture.release();
	waitKey(0);
	return 0;

}

代码的主要思路为,在这里插入图片描述
有效果视频呢,在下面视频的结尾!!!!
https://www.bilibili.com/video/BV1Ny4y1n7Xr/

因为训练的数据有限,暂时还不能满足一些极端情况(如旋转等)

关注并私信博主,发所有相关资料!!!

如果有帮助,记得三连哦!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Orange--Lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值