vs2012及以上版本中写c++时自动给代码添加创建信息注释的问题

一般的我们在创建新的代码文件的时候,我们希望能在创建的时候自动就生成我们在代码开头想要的东西,包括创建信息注释,如版权声明、文件名、作者、日期时间、版本号等信息,而且包括初始的头文件声明和主函数等一些信息。

写多了,就烦了,如果系统能自动生成就好了。

确实在写java等语言时,能轻松做到这些,甚至包括生成实时的日期时间,当前的文件名等其他同步信息。

然而在vs上,对C#能完成这些设置,但是对c++却没那么给力了。

你可能在网上见到很多如下说法:

在VS安装路径下\Common7\IDE\ItemTemplatesCache\CSharp\Code\2052\Class\Class.cs,修改Class.cs文件。

请注意

那是针对c#设置的,对c++无效的。

那么是不是就没有办法了?
确实不是很好弄,日期时间同步显示,好像不能轻易做到。

所以我们姑且暂时使用如下方法:
vs2012:
在安装目录\vs2012\VC\vcprojectitems下,找到newc++file.cpp文件

vs2017:
在安装目录E:\vs2017\Common7\IDE\VC\vcprojectitems下,找到newc++file.cpp文件

最容易找到newc++file.cpp文件的方法就是,在vs目录下搜索newc++file,即可找到。

这里写图片描述

用记事本打开,然后修改可以如下图所示:
这里写图片描述

保存后新建cpp文件即可:
这里写图片描述

这里只能在每次改一下创建时间日期,文件等相关同步的信息。不过已经相当方便了,希望以后vs后期版本能注意到这个问题。

其实还有一个方法,就是使用nippet代码片段,但也是不能同步当前创建文件的信息,且繁琐,不建议使用。

如果还有更好的建议请在下方评论区留言。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
这是一个比较复杂的项目,需要使用到多个库和技术。以下是一个大致的代码框架,可以供您参考。 首先,需要使用dlib库进行人脸识别和特征提取。同,需要使用opencv库和ffmpeg库进行rtsp视频流的捕获和解码。此外,为了提高运行速度,可以使用cuda速。 代码框架如下: ```c++ #include <dlib/opencv.h> #include <dlib/image_processing.h> #include <dlib/image_processing/frontal_face_detector.h> #include <opencv2/opencv.hpp> #include <opencv2/core/cuda.hpp> #include <opencv2/cudaimgproc.hpp> #include <opencv2/cudaarithm.hpp> #include <opencv2/cudawarping.hpp> #include <opencv2/cudaobjdetect.hpp> #include <opencv2/cudafeatures2d.hpp> #include <opencv2/cudabgsegm.hpp> #include <opencv2/cudalegacy.hpp> #include <iostream> #include <vector> #include <chrono> #include <thread> using namespace std; using namespace cv; using namespace cv::cuda; // 人脸检测器 frontal_face_detector detector = get_frontal_face_detector(); // 人脸识别模型 shape_predictor sp; // 人脸特征向量 std::vector<matrix<float,0,1>> face_descriptors; // 特征向量矩阵 matrix<float,0,1> face_descriptor_matrix; // 陌生人脸库 std::vector<matrix<float,0,1>> unknown_face_descriptors; // 载人脸识别模型 void load_shape_predictor(string filename){ deserialize(filename) >> sp; } // 载已知人脸特征库 void load_known_faces(string filename){ deserialize(filename) >> face_descriptor_matrix; // 将特征向量矩阵转为向量数组 for(int i=0;i<face_descriptor_matrix.nr();i++){ face_descriptors.push_back(rowm(face_descriptor_matrix,i)); } } // 将新的陌生人脸添加到特征库中 void add_unknown_face(matrix<float,0,1> face_descriptor){ unknown_face_descriptors.push_back(face_descriptor); // TODO: 将新的特征向量添加到特征库文件中 } // 判断是否为陌生人 bool is_unknown_face(matrix<float,0,1> face_descriptor){ // TODO: 使用KNN等算法判断是否为陌生人 return true; } // 人脸检测和特征提取 void detect_and_extract_face(Mat frame){ // 转换成dlib图像格式 cv_image<bgr_pixel> cimg(frame); // 检测人脸 std::vector<rectangle> faces = detector(cimg); // 对每个检测到的人脸进行特征提取 for (unsigned long i = 0; i < faces.size(); ++i){ // 获取人脸关键点 full_object_detection shape = sp(cimg, faces[i]); // 提取人脸特征向量 matrix<float,0,1> face_descriptor = rowm(face_descriptor_matrix,i); face_descriptors.push_back(face_descriptor); // 判断是否为陌生人 if(is_unknown_face(face_descriptor)){ // 将新的陌生人脸添加到特征库中 add_unknown_face(face_descriptor); } } } int main(int argc, char** argv){ // 载模型和已知人脸特征库 load_shape_predictor("shape_predictor_68_face_landmarks.dat"); load_known_faces("face_descriptors.dat"); // 打开rtsp视频流 VideoCapture cap("rtsp://xxx.xxx.xxx.xxx:xxxx/xxx"); if(!cap.isOpened()) return -1; // 创建GPU速器 cv::cuda::GpuMat gpu_frame; cv::cuda::GpuMat gpu_gray; cv::Ptr<cv::cuda::CascadeClassifier> cascade_gpu = cv::cuda::CascadeClassifier::create("haarcascade_frontalface_alt.xml"); cv::cuda::HostMem host_mem; // 开始循环处理每一帧视频 while(1){ Mat frame; cap >> frame; // 读取一帧视频 if (frame.empty()) break; // 将Mat格式转换为GpuMat格式 gpu_frame.upload(frame); cv::cuda::cvtColor(gpu_frame, gpu_gray, COLOR_BGR2GRAY); // 在GPU上进行人脸检测 cv::cuda::GpuMat gpu_faces; cascade_gpu->detectMultiScale(gpu_gray,gpu_faces); if(gpu_faces.cols>0){ // 将GpuMat格式的人脸框转换为矩形数组 vector<Rect> faces(gpu_faces.cols); host_mem.create(gpu_faces.size(),gpu_faces.type()); gpu_faces.download(host_mem); Rect* faces_ptr = reinterpret_cast<Rect*>(host_mem.data); for(int i=0;i<gpu_faces.cols;i++){ faces[i] = faces_ptr[i]; } // 在CPU上进行人脸检测和特征提取 detect_and_extract_face(frame); // 在原图上绘制人脸框 for(int i=0;i<faces.size();i++){ rectangle(frame,faces[i],Scalar(0,0,255),2); } } // 显示视频 imshow("video", frame); waitKey(1); } return 0; } ``` 需要注意的是,这只是一个大致的代码框架,还需要根据具体的需求进行修改和优化。同代码中还有一些TODO注释,需要根据实际情况进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值