王萌 2 weeks ago
parent 1455f179e7
commit c465ec772a

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

@ -1,2 +0,0 @@
# gitproject

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,33 @@
#ifndef CAMMANAGER_H
#define CAMMANAGER_H
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include "setting.h"
#include <mfapi.h>
#include <mfobjects.h>
#include <mfidl.h>
#include <mferror.h>
#include <vector>
#include <opencv2/opencv.hpp>
extern std::string name;
class Camera {
public:
std::string cam_id;
std::string cam_name;
std::string cam_status; // 0为未连接 1为已连接 2为已连接未工作 3为疑似异常 4为异常
std::string cam_type; // 0为未知 1为有线摄像头 2为无线摄像头
std::string cam_add;
static bool is_camera_running;
static int add_cam(std::string name, std::string type);
static int del_cam(std::string name);
static int edit_cam(std::string name, std::string location);
//static void choose_cam(const std::wstring& deviceName, const std::string location);
static void camWarning(const std::wstring& deviceName);
static void check_cam();
};
#endif

@ -0,0 +1,24 @@
#ifndef EXCEPTION_H
#define EXCEPTION_H
#include <windows.h>
#include <string>
#include <thread>
class exception {
public:
// 触发时调用Windows API进行强制全屏单击时停止
static void dialog_alarm();
// 系统音量开到最大调用Windows API
static void vol_up();
// 循环播放警报声音且全屏警告,单击后停止
static void alarm();
private:
static volatile bool alarm_running; // 用于控制报警循环
};
#endif // EXCEPTION_H

@ -0,0 +1,3 @@
#pragma once
#include "resource.h"

@ -0,0 +1,11 @@
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>
// C 运行时头文件
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

@ -0,0 +1,12 @@
#ifndef getCamIm
#define getCamIm
#include "CamManager.h"
#include <windows.h>
#include <string>
#include <iostream>
void CamImInputDialog(HINSTANCE hInstance);
extern std::string name;
extern std::string location;
#endif

@ -0,0 +1,40 @@
#ifndef GETVIDEO_H
#define GETVIDEO_H
#include <opencv2/opencv.hpp>
#include <windows.h>
#include <iostream>
#include <string>
#include <chrono>
#include <thread>
#include <filesystem>
#include "yolov5.h"
#include <filesystem>
#include <iostream>
#include <ctime>
#include <memory>
#include <cstdio>
#include <thread>
#include <future>
//include "setting.h"
extern std::string name;
extern std::string location;
extern std::string save_path;
class video {
public:
static int cam_connect(); //寻找名为全局变量name的摄像头 没找到则调用系统默认摄像头 调用成功返回true
static void startCapturing(); //从系统默认摄像头持续获取 视屏流 然后每x秒由全局变量get_Img_time决定调用一次void capture抓取一次
//static void capture(); //抓取视频流 缓存到save_path\\temp 图片命名为全局变量name+全局变量索引i i从0递增到99后从0重新开始 应在cam_connect()调用后持续运行 save_path是个全局变量
static void detect(); //读取并识别捕获的图片 这个只需要写调用del_temp的部分
static void save_log(); //识别到异常情况 保存截图到save_path\\log\\name+time.jpg
static void stopCapturing();
static void del_temp(); //每五分钟调用一次 在detect读取到索引为99后get_Img_time前0.9秒后调用 删除save_path\\temp中所有文件
static bool checkForFile();
};
#endif

@ -0,0 +1,15 @@
#ifndef main_UI_h
#define main_UI_h
#include <windows.h>
#include <string>
#include "getCamIm.h"
#include "setting.h"
#include "CamManager.h"
#include <iostream>
#include <commctrl.h>
#include <wingdi.h>
void add_but(HWND mainUI, const std::string& name, const std::string& location);
extern HWND mainUI;
#endif

@ -0,0 +1,13 @@
// pch.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
#ifndef PCH_H
#define PCH_H
// 添加要在此处预编译的标头
#include "framework.h"
#endif //PCH_H

@ -0,0 +1,32 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。
// 供 fire.rc 使用
//
#define IDC_MYICON 2
#define IDC_COMBO_CAMTYPE 101
#define IDD_FIRE_DIALOG 102
#define IDC_BTN_CONFIRM 102
#define IDS_APP_TITLE 103
#define IDD_ABOUTBOX 103
#define IDD_CAMERA_DIALOG 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDI_FIRE 107
#define IDI_SMALL 108
#define IDC_FIRE 109
#define IDR_MAINFRAME 128
#define IDD_DIALOG1 129
#define IDD_DIALOG2 130
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 131
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif

@ -0,0 +1,18 @@
#ifndef setting
#define setting
#include "CamManager.h"
#include <windows.h>
#include <string>
#include <iostream>
#include <fstream>
#include <mfapi.h>
#include <mfobjects.h>
#include <mfidl.h>
#include <mferror.h>
#include <vector>
void setting_dialog(HINSTANCE hInstance);
extern std::string save_path;
extern int get_Img_time;
#endif

@ -0,0 +1,6 @@
#pragma once
// // 包含 SDKDDKVer.h 可定义可用的最高版本的 Windows 平台。
// 如果希望为之前的 Windows 平台构建应用程序,在包含 SDKDDKVer.h 之前请先包含 WinSDKVer.h 并
// 将 _WIN32_WINNT 宏设置为想要支持的平台。
#include <SDKDDKVer.h>

@ -0,0 +1,43 @@
#ifndef YOLO_DETECTOR_H
#define YOLO_DETECTOR_H
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/dnn/dnn.hpp>
#include <string>
#include <vector>
using cv::Mat;
using std::cout;
using std::endl;
using std::string;
using std::vector;
// 筛除置信度过低的目标
extern const vector<string> class_name;
// 打印结果,返回是否有输出
bool print_result(const Mat& result, float conf = 0.7, int len_data = 15);
// 获取检测信息,返回一个二维向量
vector<vector<float>> get_info(const Mat& result, float conf = 0.7, int len_data = 15);
// 简化信息
void info_simplify(vector<vector<float>>& info);
// 将信息按类分割
vector<vector<vector<float>>> split_info(vector<vector<float>>& info);
// 非极大值抑制
void nms(vector<vector<float>>& info, float iou = 0.4);
// 打印信息
void print_info(const vector<vector<float>>& info);
// 在图像上绘制边框
void draw_box(Mat& img, const vector<vector<float>>& info);
// YOLO检测函数返回是否检测到目标
bool yolo(std::string path, std::string name, int i);
#endif // YOLO_DETECTOR_H

@ -0,0 +1,229 @@
#include "CamManager.h"
extern std::string location;
bool Camera::is_camera_running = false;
int Camera::add_cam(std::string name, std::string type) {
// 定义文件夹和文件路径
static std::string camera_list_path_ = save_path + "\\camera_list";
static std::string cam_folder_path_ = save_path + "\\" + name; //每个摄像头的存储路径
static std::string csv_file_path_ = camera_list_path_ + "\\cam_list.csv";
std::wstring camera_list_path = std::wstring(camera_list_path_.begin(), camera_list_path_.end());
std::wstring cam_folder_path = std::wstring(cam_folder_path_.begin(), cam_folder_path_.end());
std::wstring csv_file_path = std::wstring(csv_file_path_.begin(), csv_file_path_.end());
// 如果 camera_list 文件夹不存在,则创建该文件夹
if (CreateDirectory(camera_list_path.c_str(), NULL) || ERROR_ALREADY_EXISTS == GetLastError()) {
// 如果摄像头名称的文件夹不存在,则在 camera_list 下创建该文件夹
CreateDirectory(cam_folder_path.c_str(), NULL);
}
// 检查 cam_list.csv 文件是否存在
std::ofstream csv_file;
bool csv_exists = std::ifstream(csv_file_path).good();
if (!csv_exists) {
csv_file.open(csv_file_path);
csv_file << "Camera Name,Camera ID,Location,Type\n"; // CSV 文件表头
}
else {
csv_file.open(csv_file_path, std::ios::app); // 以附加模式打开
}
// 查找当前行数
int current_id = 0;
std::ifstream read_csv(csv_file_path);
std::string line;
// 读取 CSV 文件并查找当前行数
while (std::getline(read_csv, line)) {
if (!line.empty()) {
current_id++;
}
}
read_csv.close();
// 在 CSV 文件中写入新的摄像头信息
csv_file << name << "," << current_id << "," << location << "," << type << "\n";
csv_file.close();
return 0;
}
int Camera::del_cam(std::string name) {
static std::string camera_list_path_ = save_path + "\\camera_list";
static std::string cam_folder_path_ = save_path + "\\" + name; //每个摄像头的存储路径
static std::string csv_file_path_ = camera_list_path_ + "\\cam_list.csv";
// 定义 CSV 文件路径
std::wstring csv_file_path = std::wstring(csv_file_path_.begin(), csv_file_path_.end());
// 创建临时文件路径(用于保存修改后的数据)
std::wstring temp_file_path = csv_file_path + L".tmp";
// 打开原始 CSV 文件和临时文件
std::ifstream csv_file(csv_file_path);
std::ofstream temp_file(temp_file_path);
if (!csv_file.is_open() || !temp_file.is_open()) {
return -1; // 文件打开失败
}
std::string line;
bool found = false; // 用于记录是否找到目标摄像头记录
// 遍历原始 CSV 文件的每一行
while (std::getline(csv_file, line)) {
// 如果是表头,直接写入临时文件
if (line.find("Camera Name") != std::string::npos) {
temp_file << line << "\n";
continue;
}
// 按逗号分隔行内容,检查是否为目标名称
size_t pos = line.find(",");
std::string current_name = (pos != std::string::npos) ? line.substr(0, pos) : "";
if (current_name != name) {
temp_file << line << "\n"; // 非目标行写入临时文件
}
else {
found = true; // 找到目标行,跳过
}
}
csv_file.close();
temp_file.close();
// 如果未找到目标名称,则删除临时文件
if (!found) {
_wremove(temp_file_path.c_str());
return -2; // 目标名称不存在
}
// 替换原始 CSV 文件
_wremove(csv_file_path.c_str());
_wrename(temp_file_path.c_str(), csv_file_path.c_str());
return 0; // 成功删除
}
int Camera::edit_cam(std::string name, std::string location) {
// 定义 CSV 文件路径
static std::string camera_list_path_ = save_path + "\\camera_list";
static std::string cam_folder_path_ = save_path + "\\" + name; //每个摄像头的存储路径
static std::string csv_file_path_ = camera_list_path_ + "\\cam_list.csv";
std::wstring csv_file_path = std::wstring(csv_file_path_.begin(), csv_file_path_.end());
// 创建临时文件路径(用于保存修改后的数据)
std::wstring temp_file_path = csv_file_path + L".tmp";
// 打开原始 CSV 文件和临时文件
std::ifstream csv_file(csv_file_path);
std::ofstream temp_file(temp_file_path);
if (!csv_file.is_open() || !temp_file.is_open()) {
return -1; // 文件打开失败
}
std::string line;
bool found = false; // 用于记录是否找到目标摄像头记录
// 遍历原始 CSV 文件的每一行
while (std::getline(csv_file, line)) {
// 如果是表头,直接写入临时文件
if (line.find("Camera Name") != std::string::npos) {
temp_file << line << "\n";
continue;
}
// 按逗号分隔行内容,检查是否为目标名称
size_t pos = line.find(",");
std::string current_name = (pos != std::string::npos) ? line.substr(0, pos) : "";
if (current_name == name) {
found = true;
// 替换目标行的名称和位置
std::string updated_line = name + "," + line.substr(pos + 1, line.find(",", pos + 1) - pos - 1) + "," + location + "," + line.substr(line.rfind(",") + 1);
temp_file << updated_line << "\n";
}
else {
temp_file << line << "\n"; // 非目标行写入临时文件
}
}
csv_file.close();
temp_file.close();
// 如果未找到目标名称,则删除临时文件
if (!found) {
_wremove(temp_file_path.c_str());
return -2; // 目标名称不存在
}
// 替换原始 CSV 文件
_wremove(csv_file_path.c_str());
_wrename(temp_file_path.c_str(), csv_file_path.c_str());
return 0; // 成功编辑
}
void Camera::camWarning(const std::wstring& deviceName) {
// 构建消息内容
std::wstring message = L"找不到名为 \"" + deviceName + L"\" 的设备。请检查设备连接。";
// 显示弹窗
MessageBoxW(
NULL, // 父窗口句柄
message.c_str(), // 消息内容
L"设备未找到", // 弹窗标题
MB_ICONWARNING | MB_OK // 弹窗类型
);
}
void Camera::check_cam() {
if (is_camera_running) {
std::cerr << "Camera is already running." << std::endl;
return; // 如果摄像头已在运行,直接返回
}
is_camera_running = true; // 设置状态为运行中
cv::VideoCapture cap(0); // 打开默认摄像头
if (!cap.isOpened()) { // 检查摄像头是否打开
std::cerr << "Cannot open camera" << std::endl;
is_camera_running = false; // 恢复状态
return;
}
cv::namedWindow("press'q' to quit", cv::WINDOW_AUTOSIZE); // 创建一个窗口
while (true) {
cv::Mat frame;
cap >> frame; // 捕获一帧
if (frame.empty()) { // 检查是否成功捕获
std::cerr << "Empty frame" << std::endl;
break;
}
cv::imshow("press'q' to quit", frame); // 在窗口中显示捕获的帧
// 检查用户是否按下 'q' 键来退出
if (cv::waitKey(30) >= 0) {
break; // 退出循环
}
}
cap.release(); // 释放摄像头
cv::destroyWindow("press'q' to quit"); // 关闭窗口
is_camera_running = false; // 恢复状态
}

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="exception">
<Position X="3.5" Y="0.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAACAAAAIAAAAAgAEAAAAAAAAAAAAA=</HashCode>
<FileName>exception_solution.cpp</FileName>
</TypeIdentifier>
</Class>
<Class Name="Camera">
<Position X="1.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>QAAAAAAQQAAAAAAAQAAAgAAAAEABAAAAAAAAAABAEAA=</HashCode>
<FileName>CamManager.h</FileName>
</TypeIdentifier>
</Class>
<Class Name="video">
<Position X="1.5" Y="4" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAgAAAEAQAAAAAEAAAAAAAAAAAAAAAAAKAAAAA=</HashCode>
<FileName>getVideo.h</FileName>
</TypeIdentifier>
</Class>
<Class Name="MainWindow">
<Position X="5.5" Y="0.5" Width="2" />
<TypeIdentifier>
<HashCode>AAAgAAAAAAAECAAAAAAECEACAABkAAABCAAAAAAAUAI=</HashCode>
<FileName>main_UI.cpp</FileName>
</TypeIdentifier>
</Class>
<Font Name="Microsoft YaHei UI" Size="9" />
</ClassDiagram>

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram />

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="MainWindow">
<Position X="0.5" Y="0.5" Width="1.75" />
<TypeIdentifier>
<HashCode>AAAgAAAAAAAECAAAAAAECEACAABkAAABCAAAAAAAUAI=</HashCode>
<FileName>main_UI.cpp</FileName>
</TypeIdentifier>
</Class>
<Class Name="exception">
<Position X="5.25" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAACAAAAIAAAAAgAEAAAAAAAAAAAAA=</HashCode>
<FileName>exception_solution.cpp</FileName>
</TypeIdentifier>
</Class>
<Class Name="Camera">
<Position X="2.5" Y="0.5" Width="2" />
<TypeIdentifier>
<HashCode>QAAAAAAQQAAAAAAAQAAAgAAAIEABAAAAAAIAAABAEAA=</HashCode>
<FileName>CamManager.h</FileName>
</TypeIdentifier>
</Class>
<Class Name="video">
<Position X="2.5" Y="4" Width="2" />
<TypeIdentifier>
<HashCode>AAAAAAAgAAAEAQAAAAAEAAAAAAAAAAAAAAAAAKAAAAg=</HashCode>
<FileName>getVideo.h</FileName>
</TypeIdentifier>
</Class>
<Font Name="Microsoft YaHei UI" Size="9" />
</ClassDiagram>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>C:\Users\86184\source\repos\fire\Debug\fire.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>

Binary file not shown.

@ -0,0 +1,3 @@
 pch.cpp
fire.cpp
fire.vcxproj -> C:\Users\86184\source\repos\fire\Debug\fire.exe

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,2 @@
C:\Users\86184\source\repos\fire\fire\fire.cpp;C:\Users\86184\source\repos\fire\fire\Debug\fire.obj
C:\Users\86184\source\repos\fire\fire\pch.cpp;C:\Users\86184\source\repos\fire\fire\Debug\pch.obj

@ -0,0 +1,2 @@
PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.41.34120:TargetPlatformVersion=10.0.22621.0:
Debug|Win32|C:\Users\86184\source\repos\fire\|

@ -0,0 +1,2 @@
^C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\DEBUG\FIRE.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\DEBUG\FIRE.RES|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\DEBUG\PCH.OBJ
C:\Users\86184\source\repos\fire\fire\Debug\fire.ilk

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,121 @@
#include <windows.h>
#include <iostream>
#include <string>
#include <mmsystem.h>
#include <thread>
#pragma comment(lib, "winmm.lib")
extern std::string location;
class exception {
public:
static void dialog_alarm(); // 触发时调用Windows API进行强制全屏 单击时停止
static void vol_up(); // 系统音量开到最大 调用Windows API
static void alarm(); // 循环播放警报声音 且全屏警告 单击后停止
private:
static volatile bool alarm_running; // 用于控制报警循环
};
// 初始化静态成员
volatile bool exception::alarm_running = false;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// 设置红色文本颜色
SetTextColor(hdc, RGB(255, 0, 0));
SetBkMode(hdc, TRANSPARENT);
// 设置字体样式
HFONT hFont = CreateFont(
48, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS, L"Arial"
);
HFONT hOldFont = (HFONT)SelectObject(hdc, hFont);
// 生成显示的火灾警告信息,包含 location
std::wstring warningMessage = L"警告!位于 " + std::wstring(location.begin(), location.end()) + L" 的摄像头检测到火灾!";
// 绘制文本
RECT rect;
GetClientRect(hwnd, &rect);
DrawText(hdc, warningMessage.c_str(), -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
// 清理字体资源
SelectObject(hdc, hOldFont);
DeleteObject(hFont);
EndPaint(hwnd, &ps);
return 0;
}
case WM_LBUTTONDOWN: // 单击关闭窗口
DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
void exception::dialog_alarm() {
// 获取屏幕尺寸
int screen_width = GetSystemMetrics(SM_CXSCREEN);
int screen_height = GetSystemMetrics(SM_CYSCREEN);
// 注册窗口类
const wchar_t CLASS_NAME[] = L"FullScreenAlert";
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
// 创建全屏窗口
HWND hwnd = CreateWindowEx(
WS_EX_TOPMOST, CLASS_NAME, L"警告!",
WS_POPUP | WS_VISIBLE, 0, 0, screen_width, screen_height,
NULL, NULL, wc.hInstance, NULL
);
// 显示窗口并设置为最上层
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
void exception::vol_up() {
// 设置音量为最大
waveOutSetVolume(0, 0xFFFFFFFF);
}
void exception::alarm() {
alarm_running = true;
// 播放警报声音的线程
std::thread([&]() {
while (alarm_running) {
PlaySound(L"path_to_alarm_sound.wav", NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
std::this_thread::sleep_for(std::chrono::milliseconds(1000)); // 适当的延时
}
PlaySound(NULL, NULL, 0); // 停止播放
}).detach();
// 触发全屏警告
dialog_alarm();
// 停止报警
alarm_running = false;
}

Binary file not shown.

@ -0,0 +1,181 @@
// fire.cpp : 定义应用程序的入口点。
//
#include "pch.h"
#include "framework.h"
#include "fire.h"
#define MAX_LOADSTRING 100
// 全局变量:
HINSTANCE hInst; // 当前实例
WCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本
WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名
// 此代码模块中包含的函数的前向声明:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
// TODO: 在此处放置代码。
// 初始化全局字符串
LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadStringW(hInstance, IDC_FIRE, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// 执行应用程序初始化:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_FIRE));
MSG msg;
// 主消息循环:
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
//
// 函数: MyRegisterClass()
//
// 目标: 注册窗口类。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_FIRE));
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_FIRE);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassExW(&wcex);
}
//
// 函数: InitInstance(HINSTANCE, int)
//
// 目标: 保存实例句柄并创建主窗口
//
// 注释:
//
// 在此函数中,我们在全局变量中保存实例句柄并
// 创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // 将实例句柄存储在全局变量中
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
//
// 函数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
// 目标: 处理主窗口的消息。
//
// WM_COMMAND - 处理应用程序菜单
// WM_PAINT - 绘制主窗口
// WM_DESTROY - 发送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: 在此处添加使用 hdc 的任何绘图代码...
EndPaint(hWnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// “关于”框的消息处理程序。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{2bd18c3e-162e-45f4-ae9a-7eda326d6058}</ProjectGuid>
<RootNamespace>fire</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IncludePath>D:\cpp_lib\opencv-cpp\opencv\build\include;D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2;$(IncludePath)</IncludePath>
<LibraryPath>D:\cpp_lib\opencv-cpp\opencv\build\x64\vc16\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>opencv_world4100d.lib;Mf.lib;Mfplat.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="CamManager.h" />
<ClInclude Include="fire.h" />
<ClInclude Include="framework.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="getCamIm.h" />
<ClInclude Include="setting.h" />
<ClInclude Include="main_UI.h" />
<ClInclude Include="getVideo.h" />
<ClInclude Include="yolov5.h" />
<ClInclude Include="exception.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="main_UI.cpp" />
<ClCompile Include="CamManager.cpp" />
<ClCompile Include="getCamIm.cpp" />
<ClCompile Include="setting.cpp" />
<ClCompile Include="add_but_dialog.cpp" />
<ClCompile Include="getVideo.cpp" />
<ClCompile Include="exception_solution.cpp" />
<ClCompile Include="yolov8.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="fire.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="D:\Users\86184\Desktop\cam.jpg" />
<Image Include="D:\Users\86184\Desktop\mainicon.ico" />
<Image Include="fire.ico" />
<Image Include="small.ico" />
</ItemGroup>
<ItemGroup>
<None Include="ClassDiagram2.cd" />
<None Include="D:\Users\86184\Desktop\yolov8\best.pt" />
<None Include="D:\Users\86184\Desktop\yolov8\detect.py" />
<None Include="D:\Users\86184\Desktop\yolov8\yolov8n.pt" />
</ItemGroup>
<ItemGroup>
<Media Include="D:\Users\86184\Desktop\yolov8\0080.mp3" />
</ItemGroup>
<ItemGroup>
<Text Include="D:\Users\86184\Desktop\yolov8\requirements.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="源文件\UI">
<UniqueIdentifier>{2857b1d5-60d7-4cd3-a695-4ab6c91566ab}</UniqueIdentifier>
</Filter>
<Filter Include="源文件\src">
<UniqueIdentifier>{4562390c-aa21-4024-b711-7e5d609d2fd4}</UniqueIdentifier>
</Filter>
<Filter Include="源文件\yolov8">
<UniqueIdentifier>{0f7f0ada-5746-4fe3-835a-11ff99429e63}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="framework.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="Resource.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="fire.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="pch.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="CamManager.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="getCamIm.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="setting.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="main_UI.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="getVideo.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="yolov5.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="exception.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main_UI.cpp">
<Filter>源文件\UI</Filter>
</ClCompile>
<ClCompile Include="CamManager.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="getCamIm.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="setting.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="add_but_dialog.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="getVideo.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="exception_solution.cpp">
<Filter>源文件\src</Filter>
</ClCompile>
<ClCompile Include="yolov8.cpp">
<Filter>源文件\yolov8</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="fire.rc">
<Filter>资源文件</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="small.ico">
<Filter>资源文件</Filter>
</Image>
<Image Include="fire.ico">
<Filter>资源文件</Filter>
</Image>
<Image Include="D:\Users\86184\Desktop\mainicon.ico">
<Filter>资源文件</Filter>
</Image>
<Image Include="D:\Users\86184\Desktop\cam.jpg">
<Filter>资源文件</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<None Include="D:\Users\86184\Desktop\yolov8\best.pt">
<Filter>源文件\yolov8</Filter>
</None>
<None Include="D:\Users\86184\Desktop\yolov8\detect.py">
<Filter>源文件\yolov8</Filter>
</None>
<None Include="D:\Users\86184\Desktop\yolov8\yolov8n.pt">
<Filter>源文件\yolov8</Filter>
</None>
<None Include="ClassDiagram2.cd" />
</ItemGroup>
<ItemGroup>
<Media Include="D:\Users\86184\Desktop\yolov8\0080.mp3">
<Filter>源文件\yolov8</Filter>
</Media>
</ItemGroup>
<ItemGroup>
<Text Include="D:\Users\86184\Desktop\yolov8\requirements.txt">
<Filter>源文件\yolov8</Filter>
</Text>
</ItemGroup>
</Project>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

@ -0,0 +1,14 @@
#ifndef GETCAMIM_H
#define GETCAMIM_H
#include <windows.h>
#include <string>
#include "CamManager.h"
#include <iostream>
std::string name;
std::string location;
#endif

@ -0,0 +1,146 @@
#include "getVideo.h"
#include "exception.h"
// 全局变量定义
extern int get_Img_time;
int p;
//bool capturing;
//cv::Mat frame;
std::string temp_path = save_path + "\\temp";
extern bool IsRun;
std::atomic<bool> capturing(false); // 原子布尔值 表示是否正在捕获视频
std::atomic<bool> isfire(false);
HANDLE hProcess = NULL; // 用于存储子进程的句柄
// 摄像头连接
int video::cam_connect() {
cv::VideoCapture cap;
int x;
// 尝试打开指定名称的摄像头
cap.open(name);
if (!cap.isOpened()) {
for (x = 0; x <= 0; x++) {
cap.open(0);
}
}
return x; // 返回摄像头连接状态
}
// 启动视频捕获
void video::startCapturing() {
capturing = true; // 设置捕获状态为真
PROCESS_INFORMATION processInfo; // 存储进程信息
ZeroMemory(&processInfo, sizeof(processInfo)); // 清空进程信息
STARTUPINFOA startupInfo; // 启动信息结构体
ZeroMemory(&startupInfo, sizeof(startupInfo)); // 清空启动信息
startupInfo.cb = sizeof(startupInfo); // 设置结构体大小
// 指定要执行的命令(在 CMD 中运行 Python 脚本)
const char* command = "cmd.exe /C D: && python D:\\Users\\86184\\Desktop\\application\\app\\src\\main\\python\\yolo\\window.py";
// 创建新进程来执行命令
if (CreateProcessA(NULL, const_cast<LPSTR>(command), NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo)) {
hProcess = processInfo.hProcess; // 保存进程句柄
// 创建一个新线程,等待进程完成
std::thread([=]() {
WaitForSingleObject(hProcess, INFINITE); // 等待进程结束
capturing = false; // 设置捕获状态为假
}).detach(); // 分离线程,允许其在后台运行
}
else {
std::cerr << "Failed to create process." << std::endl; // 创建进程失败时输出错误信息
}
}
// 检测到火灾
void video::detect() {
// 后台线程持续检测状态
std::thread detectionThread([]() {
while (capturing && not isfire) { // 只要 capturing 为 true 就持续运行
if (video::checkForFile()) { // 检查文件是否存在
video::save_log(); // 保存日志
exception::dialog_alarm(); // 弹出报警对话框
exception::alarm(); // 触发报警
isfire = true;
}
std::this_thread::sleep_for(std::chrono::seconds(1)); // 每秒检查一次
}
});
// 分离线程,让其独立运行
detectionThread.detach();
}
// 保存日志
void video::save_log() {
// 获取当前时间戳
std::string time_str = std::to_string(time(0));
//重命名
std::string new_file_name = save_path + name + time_str + ".jpg";
// 原保存路径
std::string source_path = "D:\\Users\\86184\\Desktop\\yolov8\\this_fire.jpg";
try {
// 尝试重命名并移动文件
std::filesystem::rename(source_path, new_file_name);
std::cout << "File moved and renamed to: " << new_file_name << std::endl;
}
catch (const std::filesystem::filesystem_error& e) {
// 捕获文件系统错误并输出信息
std::cerr << "Error moving file: " << e.what() << std::endl;
}
}
// 删除临时文件 好像不用了
void video::del_temp() {
auto temp_path = save_path + "\\temp\\"; // 临时文件路径
// 遍历临时路径下的所有文件并删除
for (const auto& entry : std::filesystem::directory_iterator(temp_path)) {
std::filesystem::remove(entry.path());
}
}
// 停止捕获视频 杀死进程
void video::stopCapturing() {
// 如果正在捕获并且进程句柄有效
if (capturing && hProcess != NULL) {
TerminateProcess(hProcess, 0); // 强制终止子进程
CloseHandle(hProcess); // 关闭进程句柄
hProcess = NULL; // 重置进程句柄
capturing = false; // 设置捕获状态为假
}
}
// 检查特定文件
bool video::checkForFile() {
using namespace std::chrono_literals; // 使用 chrono 命名空间的字面量
int consecutiveFoundCount = 0; // 计数器,用于记录连续检测到文件的次数
const int requiredConsecutiveSeconds = 2; // 连续2秒
while (capturing) {
std::filesystem::path filePath = std::filesystem::path("D:\\Users\\86184\\Desktop\\dev") / "isfire.txt"; // 文件路径
if (std::filesystem::exists(filePath)) { // 检查文件是否存在
consecutiveFoundCount++; // 如果存在,增加计数
}
else {
consecutiveFoundCount = 0; // 如果文件不存在,重置计数
}
if (consecutiveFoundCount >= requiredConsecutiveSeconds) { // 连续2秒检测到文件
return true;
}
std::this_thread::sleep_for(1s); // 每次循环暂停1秒后继续检查
}
return false; // 如果循环结束,返回假
}

Binary file not shown.

@ -0,0 +1,419 @@
#include <windows.h>
#include <string>
#include "getCamIm.h"
#include "setting.h"
#include "CamManager.h"
#include <iostream>
#include <commctrl.h>
#include <wingdi.h>
#include "getVideo.h"
std::thread capture_thread;
std::thread detect_thread;
static std::string location;
extern std::string name;
class MainWindow {
public:
MainWindow(HINSTANCE hInstance);
void Show(int nCmdShow);
void Run();
void add_word(const std::string& name, const std::string& location);
void add_but(const std::string& name, const std::string& location);
void EditLocationDialog(HINSTANCE hInstance);
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static LRESULT CALLBACK InputDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static MainWindow* instance; // 用于在静态函数中访问类实例
HWND mainUI;
HWND hCamIm;
HWND hButton;
HWND hContainer = nullptr;
std::string name;
std::string location;
void del_but();
void CamImInputDialog(HINSTANCE hInstance);
void del_word();
};
// 静态成员初始化
MainWindow* MainWindow::instance = nullptr;
// 构造函数
MainWindow::MainWindow(HINSTANCE hInstance) {
instance = this;
const wchar_t CLASS_NAME[] = L"SampleWindowClass";
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
mainUI = CreateWindowEx(
0,
CLASS_NAME,
L"Fire Detector Based on YOLOv5",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
300, 800,
NULL, NULL, hInstance, NULL
);
}
void MainWindow::Show(int nCmdShow) {
ShowWindow(mainUI, nCmdShow);
UpdateWindow(mainUI);
}
void MainWindow::Run() {
MSG msg = {};
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
// 添加摄像头名称和位置
void MainWindow::add_word(const std::string& name, const std::string& location) {
// 销毁原有的显示内容
del_word();
// 创建一个容器,用于放置文本框
hContainer = CreateWindowEx(WS_EX_CLIENTEDGE, L"STATIC", NULL,
WS_VISIBLE | WS_CHILD,
10, 60, 260, 60, mainUI, NULL, NULL, NULL);
// 创建名称文本框
hCamIm = CreateWindowEx(WS_EX_CLIENTEDGE, L"STATIC", std::wstring(name.begin(), name.end()).c_str(),
WS_VISIBLE | WS_CHILD | SS_CENTER,
0, 0, 260, 30, hContainer, NULL, NULL, NULL);
// 设置名称字体
HFONT hFontName = CreateFont(24, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, 0, 0, DEFAULT_QUALITY, VARIABLE_PITCH, L"黑体");
SendMessage(hCamIm, WM_SETFONT, (WPARAM)hFontName, TRUE);
// 创建位置文本框
HWND hLocationTextBox = CreateWindowEx(WS_EX_CLIENTEDGE, L"STATIC", std::wstring(location.begin(), location.end()).c_str(),
WS_VISIBLE | WS_CHILD | SS_CENTER,
0, 30, 260, 30, hContainer, NULL, NULL, NULL);
// 设置位置字体
HFONT hFontLocation = CreateFont(16, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, 0, 0, DEFAULT_QUALITY, VARIABLE_PITCH, L"黑体");
SendMessage(hLocationTextBox, WM_SETFONT, (WPARAM)hFontLocation, TRUE);
}
void MainWindow::del_word() {
// 销毁之前的容器和文本框
if (hContainer) {
DestroyWindow(hContainer);
hContainer = nullptr;
}
if (hCamIm) {
DestroyWindow(hCamIm);
hCamIm = nullptr;
}
}
void MainWindow::del_but() {
if (hButton) {
DestroyWindow(hButton);
hButton = NULL; // 重置句柄
hCamIm = NULL;
}
}
// 按钮事件处理
LRESULT CALLBACK MainWindow::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE: {
instance->hButton = CreateWindowEx(0, L"BUTTON", L"设置",
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
15, 720, 100, 30, hwnd, (HMENU)1, NULL, NULL);
CreateWindowEx(0, L"BUTTON", L"添加摄像头",
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
170, 720, 100, 30, hwnd, (HMENU)2, NULL, NULL);
break;
}
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
HBRUSH hBrush = CreateSolidBrush(RGB(255, 255, 255));
FillRect(hdc, &ps.rcPaint, hBrush);
DeleteObject(hBrush);
HFONT hFont = CreateFont(
38, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, 0, 0, DEFAULT_QUALITY,
VARIABLE_PITCH, L"黑体"
);
SelectObject(hdc, hFont);
TextOut(hdc, 10, 10, L"摄像头列表", wcslen(L"摄像头列表"));
HPEN hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
SelectObject(hdc, hPen);
MoveToEx(hdc, 0, 56, NULL);
LineTo(hdc, 300, 56);
DeleteObject(hPen);
DeleteObject(hFont);
EndPaint(hwnd, &ps);
return 0;
}
case WM_CONTEXTMENU: {
POINT pt;
GetCursorPos(&pt);
HMENU hMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING, 3, L"编辑摄像头");
AppendMenu(hMenu, MF_STRING, 4, L"删除摄像头");
AppendMenu(hMenu, MF_STRING, 7, L"查看摄像头");
AppendMenu(hMenu, MF_STRING, 5, L"开始检测");
AppendMenu(hMenu, MF_STRING, 6, L"停止检测");
TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL);
DestroyMenu(hMenu);
break;
}
case WM_LBUTTONDBLCLK: {
//instance->getStream(); // 确保你有一个成员函数来处理流
break;
}
case WM_COMMAND: {
switch (LOWORD(wParam)) {
case 1:
setting_dialog(GetModuleHandle(NULL));
break;
case 2:
instance->CamImInputDialog(GetModuleHandle(NULL));
Camera::add_cam(instance->name, "1");
break;
case 3:
instance->EditLocationDialog(GetModuleHandle(NULL));
Camera::edit_cam(instance->name,instance->location);
break;
case 4:
instance->del_but();
instance->del_word();
Camera::del_cam(instance->name);
break;
case 5:
detect_thread = std::thread(video::detect);
capture_thread = std::thread(video::startCapturing);
break;
case 6:
video::stopCapturing();
if (capture_thread.joinable()) capture_thread.join();
if (detect_thread.joinable()) detect_thread.join();
break;
case 7:
Camera::check_cam();
break;
}
}
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK MainWindow::InputDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
static HWND hNameEdit, hLocationEdit;
switch (uMsg) {
case WM_CREATE: {
// 创建名称和位置输入框
CreateWindowEx(0, L"STATIC", L"设备名称:", WS_VISIBLE | WS_CHILD,
10, 10, 100, 25, hwnd, NULL, NULL, NULL);
hNameEdit = CreateWindowEx(0, L"EDIT", L"",
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL,
120, 10, 160, 25, hwnd, NULL, NULL, NULL);
CreateWindowEx(0, L"STATIC", L"摄像头位置:", WS_VISIBLE | WS_CHILD,
10, 50, 100, 25, hwnd, NULL, NULL, NULL);
hLocationEdit = CreateWindowEx(0, L"EDIT", L"",
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL,
120, 50, 160, 25, hwnd, NULL, NULL, NULL);
CreateWindowEx(0, L"BUTTON", L"确认",
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
75, 120, 140, 30, hwnd, (HMENU)1, NULL, NULL);
break;
}
case WM_COMMAND: {
if (LOWORD(wParam) == 1) {
// 获取用户输入的名称和位置
char buffer[256];
GetWindowTextA(hNameEdit, buffer, sizeof(buffer));
instance->name = buffer; // 更新摄像头名称
GetWindowTextA(hLocationEdit, buffer, sizeof(buffer));
instance->location = buffer; // 更新摄像头位置
// 删除之前的文本框内容
instance->del_word();
// 用新信息创建文本框和按钮
instance->add_word(instance->name, instance->location);
instance->add_but(instance->name, instance->location);
// 销毁当前对话框窗口
DestroyWindow(hwnd);
}
break;
}
case WM_DESTROY:
return 0;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
// 创建摄像头输入对话框
void MainWindow::CamImInputDialog(HINSTANCE hInstance) {
WNDCLASS wc = {};
wc.lpfnWndProc = MainWindow::InputDialogProc;
wc.hInstance = hInstance;
wc.lpszClassName = L"InputDialogClass";
RegisterClass(&wc);
// 创建弹窗窗口
HWND hwnd = CreateWindowEx(
0, L"InputDialogClass", L"添加摄像头",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,
NULL, NULL, hInstance, NULL
);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
// 进入弹窗的消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
void MainWindow::add_but(const std::string& name, const std::string& location) {
hButton = CreateWindowEx(
WS_EX_LAYERED | WS_EX_TRANSPARENT, // 设置为分层窗口
L"BUTTON", NULL,
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
10, 66, 250, 60,
mainUI, NULL, NULL, NULL
);
// 设置按钮的透明属性
SetLayeredWindowAttributes(hButton, RGB(255, 255, 255), 255, LWA_COLORKEY); // 使白色透明
HBITMAP hBitmap = (HBITMAP)LoadImageA(NULL, "icon.jpg", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
SendMessage(hButton, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);
std::wstring wideName = std::wstring(name.begin(), name.end());
std::wstring wideLocation = std::wstring(location.begin(), location.end());
// 直接在按钮上绘制文本而不改变按钮的背景
HDC hdc = GetDC(hButton);
HFONT hFontLarge = CreateFont(
-24, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, 0, 0, DEFAULT_QUALITY,
VARIABLE_PITCH, L"黑体"
);
HFONT hFontSmall = CreateFont(
-16, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, 0, 0, DEFAULT_QUALITY,
VARIABLE_PITCH, L"黑体"
);
SelectObject(hdc, hFontLarge);
TextOut(hdc, 10, 10, wideName.c_str(), wideName.size());
SelectObject(hdc, hFontSmall);
TextOut(hdc, 10, 40, wideLocation.c_str(), wideLocation.size());
SelectObject(hdc, hFontLarge);
DeleteObject(hFontLarge);
DeleteObject(hFontSmall);
ReleaseDC(hButton, hdc);
}
void MainWindow::EditLocationDialog(HINSTANCE hInstance) {
WNDCLASS wc = {};
wc.lpfnWndProc = MainWindow::InputDialogProc; // 使用现有的 InputDialogProc 来处理窗口消息
wc.hInstance = hInstance;
wc.lpszClassName = L"EditLocationDialogClass"; // 类名需要更改以避免与已有的对话框冲突
RegisterClass(&wc);
// 创建弹窗窗口
HWND hwnd = CreateWindowEx(
0, L"EditLocationDialogClass", L"修改摄像头", // 修改标题
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,
NULL, NULL, hInstance, NULL
);
// 创建摄像头名称编辑框
static HWND hNameEdit, hLocationEdit;
CreateWindowEx(0, L"STATIC", L"摄像头名称:", WS_VISIBLE | WS_CHILD,
10, 10, 100, 25, hwnd, NULL, NULL, NULL);
hNameEdit = CreateWindowEx(0, L"EDIT", std::wstring(name.begin(), name.end()).c_str(), // 传递当前名称
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL,
120, 10, 160, 25, hwnd, NULL, NULL, NULL);
// 创建摄像头位置编辑框
CreateWindowEx(0, L"STATIC", L"摄像头位置:", WS_VISIBLE | WS_CHILD,
10, 50, 100, 25, hwnd, NULL, NULL, NULL);
hLocationEdit = CreateWindowEx(0, L"EDIT", std::wstring(location.begin(), location.end()).c_str(), // 传递当前位置
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL,
120, 50, 160, 25, hwnd, NULL, NULL, NULL);
// 创建确认按钮
CreateWindowEx(0, L"BUTTON", L"确认",
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
75, 120, 140, 30, hwnd, (HMENU)1, NULL, NULL);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
// 进入弹窗的消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
// 程序入口
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) {
MainWindow mainWindow(hInstance);
mainWindow.Show(nCmdShow);
mainWindow.Run();
return 0;
}

Binary file not shown.

@ -0,0 +1,90 @@
#include <windows.h>
#include <string>
#include <fstream> // 引入文件流库
#include "CamManager.h"
#include <iostream>
// 全局静态变量
std::string save_path;
int get_Img_time;
// 窗口过程函数
LRESULT CALLBACK SettingDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
static HWND hTimeEdit, hPathEdit;
switch (uMsg) {
case WM_CREATE: {
// 创建文本标签和输入框
CreateWindowEx(0, L"STATIC", L"主动检测时间(秒):", WS_VISIBLE | WS_CHILD,
10, 10, 150, 25, hwnd, NULL, NULL, NULL);
hTimeEdit = CreateWindowEx(0, L"EDIT", L"",
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL,
180, 10, 100, 25, hwnd, NULL, NULL, NULL);
CreateWindowEx(0, L"STATIC", L"存储地址:", WS_VISIBLE | WS_CHILD,
10, 50, 100, 25, hwnd, NULL, NULL, NULL);
hPathEdit = CreateWindowEx(0, L"EDIT", L"",
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL,
180, 50, 100, 25, hwnd, NULL, NULL, NULL);
// 创建按钮
CreateWindowEx(0, L"BUTTON", L"确认",
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
80, 100, 140, 30, hwnd, (HMENU)1, NULL, NULL);
break;
}
case WM_COMMAND: {
if (LOWORD(wParam) == 1) { // 按钮被点击
// 获取输入框的内容
char buffer[256];
GetWindowTextA(hTimeEdit, buffer, sizeof(buffer));
get_Img_time = std::stoi(buffer); // 将时间赋值给全局变量
GetWindowTextA(hPathEdit, buffer, sizeof(buffer));
save_path = buffer; // 将路径赋值给全局变量
// 创建并写入 setting.txt 文件
std::ofstream settingsFile(save_path + "\\setting.cpp");
if (settingsFile.is_open()) {
settingsFile << "save_path = " << save_path << ";\n";
settingsFile << "get_Img_time = " << get_Img_time << ";\n";
settingsFile.close(); // 关闭文件
}
else {
MessageBoxA(hwnd, "无法创建文件。", "错误", MB_ICONERROR);
}
// 关闭弹窗
DestroyWindow(hwnd);
}
break;
}
case WM_DESTROY:
// PostQuitMessage(0); // 不调用这个,以免关闭主界面
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
// 创建弹窗的函数
void setting_dialog(HINSTANCE hInstance) {
// 注册窗口类
WNDCLASS wc = {};
wc.lpfnWndProc = SettingDialogProc;
wc.hInstance = hInstance;
wc.lpszClassName = L"SettingDialogClass";
RegisterClass(&wc);
// 创建弹窗窗口
HWND hwnd = CreateWindowEx(
0, L"SettingDialogClass", L"设置对话框",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,
NULL, NULL, hInstance, NULL
);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

@ -0,0 +1 @@
D:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\TEAM TOOLS\STATIC ANALYSIS TOOLS\\RULE SETS\NATIVERECOMMENDEDRULES.RULESET

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>C:\Users\86184\source\repos\fire\x64\Debug\fire.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>

Binary file not shown.

@ -0,0 +1,2 @@
 getVideo.cpp
fire.vcxproj -> C:\Users\86184\source\repos\fire\x64\Debug\fire.exe

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,8 @@
C:\Users\86184\source\repos\fire\fire\main_UI.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\main_UI.obj
C:\Users\86184\source\repos\fire\fire\CamManager.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\CamManager.obj
C:\Users\86184\source\repos\fire\fire\getCamIm.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\getCamIm.obj
C:\Users\86184\source\repos\fire\fire\setting.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\setting.obj
C:\Users\86184\source\repos\fire\fire\add_but_dialog.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\add_but_dialog.obj
C:\Users\86184\source\repos\fire\fire\getVideo.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\getVideo.obj
C:\Users\86184\source\repos\fire\fire\exception_solution.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\exception_solution.obj
C:\Users\86184\source\repos\fire\fire\yolov8.cpp;C:\Users\86184\source\repos\fire\fire\x64\Debug\yolov8.obj

@ -0,0 +1,2 @@
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.41.34120:TargetPlatformVersion=10.0.22621.0:
Debug|x64|C:\Users\86184\source\repos\fire\|

@ -0,0 +1,2 @@
^C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\ADD_BUT_DIALOG.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\CAMMANAGER.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\EXCEPTION_SOLUTION.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\FIRE.RES|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\GETCAMIM.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\GETVIDEO.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\MAIN_UI.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\SETTING.OBJ|C:\USERS\86184\SOURCE\REPOS\FIRE\FIRE\X64\DEBUG\YOLOV8.OBJ
C:\Users\86184\source\repos\fire\fire\x64\Debug\fire.ilk

File diff suppressed because it is too large Load Diff

@ -0,0 +1,468 @@
<?xml version="1.0" encoding="UTF-8"?>
<DEFECTS>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>mat.inl.hpp</FILENAME>
<LINE>1239</LINE>
<COLUMN>9</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::MatStep::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::MatStep::{ctor}</FUNCTION>
<DECORATED>??0MatStep@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>1239</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::MatStep::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>mat.inl.hpp</FILENAME>
<LINE>1245</LINE>
<COLUMN>9</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::MatStep::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::MatStep::{ctor}</FUNCTION>
<DECORATED>??0MatStep@cv@@QEAA@_K@Z</DECORATED>
<FUNCLINE>1245</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::MatStep::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>async.hpp</FILENAME>
<LINE>70</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>26439</DEFECTCODE>
<DESCRIPTION>此类函数不应 throw。声明它为 "noexcept" (f.6)。</DESCRIPTION>
<FUNCTION>cv::AsyncArray::{ctor}</FUNCTION>
<DECORATED>??0AsyncArray@cv@@QEAA@$$QEAV01@@Z</DECORATED>
<FUNCLINE>70</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>matrix.h</FILENAME>
<LINE>98</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::UntypedMatrix::type。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::UntypedMatrix::{ctor}</FUNCTION>
<DECORATED>??0UntypedMatrix@cvflann@@QEAA@PEAXJJ@Z</DECORATED>
<FUNCLINE>98</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::UntypedMatrix::type</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_mean_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_mean_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_max_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_max_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::n_buckets_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::n_buckets_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_min_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_min_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_std_dev。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_std_dev</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_median_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_median_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UCompressedRectilinearProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearPortraitProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearPortraitProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UCompressedRectilinearPortraitProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearPortraitProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::PaniniProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::PaniniProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UPaniniProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::PaniniProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::PaniniPortraitProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::PaniniPortraitProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UPaniniPortraitProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::PaniniPortraitProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>any.h</FILENAME>
<LINE>120</LINE>
<COLUMN>9</COLUMN>
</SFA>
<DEFECTCODE>6269</DEFECTCODE>
<DESCRIPTION>操作顺序可能不正确。</DESCRIPTION>
<FUNCTION>cvflann::anyimpl::big_any_policy&lt;enum cvflann::flann_algorithm_t&gt;::move</FUNCTION>
<DECORATED>?move@?$big_any_policy@W4flann_algorithm_t@cvflann@@@anyimpl@cvflann@@UEAAXPEBQEAXPEAPEAX@Z</DECORATED>
<FUNCLINE>118</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>any.h</FILENAME>
<LINE>120</LINE>
<COLUMN>9</COLUMN>
</SFA>
<DEFECTCODE>6269</DEFECTCODE>
<DESCRIPTION>操作顺序可能不正确。</DESCRIPTION>
<FUNCTION>cvflann::anyimpl::big_any_policy&lt;enum cvflann::flann_centers_init_t&gt;::move</FUNCTION>
<DECORATED>?move@?$big_any_policy@W4flann_centers_init_t@cvflann@@@anyimpl@cvflann@@UEAAXPEBQEAXPEAPEAX@Z</DECORATED>
<FUNCLINE>118</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>utility.hpp</FILENAME>
<LINE>973</LINE>
<COLUMN>29</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::AutoBuffer&lt;__int64,1&gt;::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::AutoBuffer&lt;__int64,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$AutoBuffer@_J$00@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>973</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::AutoBuffer&lt;__int64,1&gt;::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>utility.hpp</FILENAME>
<LINE>973</LINE>
<COLUMN>29</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::AutoBuffer&lt;double,1&gt;::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::AutoBuffer&lt;double,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$AutoBuffer@N$00@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>973</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::AutoBuffer&lt;double,1&gt;::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>173</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,3,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$02$00@cv@@QEAA@MMM@Z</DECORATED>
<FUNCLINE>169</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>173</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“3”超出了“0”至“2”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,3,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$02$00@cv@@QEAA@MMM@Z</DECORATED>
<FUNCLINE>169</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>173</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;double,3,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@N$02$00@cv@@QEAA@NNN@Z</DECORATED>
<FUNCLINE>169</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>173</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“3”超出了“0”至“2”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;double,3,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@N$02$00@cv@@QEAA@NNN@Z</DECORATED>
<FUNCLINE>169</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>165</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,2,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$01$00@cv@@QEAA@MM@Z</DECORATED>
<FUNCLINE>161</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>165</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“2”超出了“0”至“1”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,2,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$01$00@cv@@QEAA@MM@Z</DECORATED>
<FUNCLINE>161</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>165</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;double,2,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@N$01$00@cv@@QEAA@NN@Z</DECORATED>
<FUNCLINE>161</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>165</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“2”超出了“0”至“1”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;double,2,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@N$01$00@cv@@QEAA@NN@Z</DECORATED>
<FUNCLINE>161</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>181</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,4,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$03$00@cv@@QEAA@MMMM@Z</DECORATED>
<FUNCLINE>177</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>181</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“4”超出了“0”至“3”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,4,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$03$00@cv@@QEAA@MMMM@Z</DECORATED>
<FUNCLINE>177</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>181</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;double,4,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@N$03$00@cv@@QEAA@NNNN@Z</DECORATED>
<FUNCLINE>177</FUNCLINE>
<PATH></PATH>
</DEFECT>
<DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>181</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“4”超出了“0”至“3”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;double,4,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@N$03$00@cv@@QEAA@NNNN@Z</DECORATED>
<FUNCLINE>177</FUNCLINE>
<PATH></PATH>
</DEFECT>
</DEFECTS>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,345 @@
<?xml version="1.0" encoding="utf-8"?><DEFECTS><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>mat.inl.hpp</FILENAME>
<LINE>1239</LINE>
<COLUMN>9</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::MatStep::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::MatStep::{ctor}</FUNCTION>
<DECORATED>??0MatStep@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>1239</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::MatStep::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>mat.inl.hpp</FILENAME>
<LINE>1245</LINE>
<COLUMN>9</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::MatStep::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::MatStep::{ctor}</FUNCTION>
<DECORATED>??0MatStep@cv@@QEAA@_K@Z</DECORATED>
<FUNCLINE>1245</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::MatStep::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>async.hpp</FILENAME>
<LINE>70</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>26439</DEFECTCODE>
<DESCRIPTION>此类函数不应 throw。声明它为 "noexcept" (f.6)。</DESCRIPTION>
<FUNCTION>cv::AsyncArray::{ctor}</FUNCTION>
<DECORATED>??0AsyncArray@cv@@QEAA@$$QEAV01@@Z</DECORATED>
<FUNCLINE>70</FUNCLINE>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>matrix.h</FILENAME>
<LINE>98</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::UntypedMatrix::type。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::UntypedMatrix::{ctor}</FUNCTION>
<DECORATED>??0UntypedMatrix@cvflann@@QEAA@PEAXJJ@Z</DECORATED>
<FUNCLINE>98</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::UntypedMatrix::type</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_mean_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_mean_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_max_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_max_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::n_buckets_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::n_buckets_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_min_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_min_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_std_dev。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_std_dev</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>lsh_table.h</FILENAME>
<LINE>102</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cvflann::lsh::LshStats::bucket_size_median_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cvflann::lsh::LshStats::{ctor}</FUNCTION>
<DECORATED>??0LshStats@lsh@cvflann@@QEAA@XZ</DECORATED>
<FUNCLINE>102</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cvflann::lsh::LshStats::bucket_size_median_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UCompressedRectilinearProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearPortraitProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearPortraitProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UCompressedRectilinearPortraitProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::CompressedRectilinearPortraitProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::PaniniProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::PaniniProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UPaniniProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::PaniniProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\stitching\detail\</FILEPATH>
<FILENAME>warpers.hpp</FILENAME>
<LINE>188</LINE>
<COLUMN>0</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::detail::RotationWarperBase&lt;cv::detail::PaniniPortraitProjector&gt;::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::detail::RotationWarperBase&lt;cv::detail::PaniniPortraitProjector&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$RotationWarperBase@UPaniniPortraitProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>188</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::detail::RotationWarperBase&lt;cv::detail::PaniniPortraitProjector&gt;::projector_</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\flann\</FILEPATH>
<FILENAME>any.h</FILENAME>
<LINE>120</LINE>
<COLUMN>9</COLUMN>
</SFA>
<DEFECTCODE>6269</DEFECTCODE>
<DESCRIPTION>操作顺序可能不正确。</DESCRIPTION>
<FUNCTION>cvflann::anyimpl::big_any_policy&lt;enum cvflann::flann_algorithm_t&gt;::move</FUNCTION>
<DECORATED>?move@?$big_any_policy@W4flann_algorithm_t@cvflann@@@anyimpl@cvflann@@UEAAXPEBQEAXPEAPEAX@Z</DECORATED>
<FUNCLINE>118</FUNCLINE>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>utility.hpp</FILENAME>
<LINE>973</LINE>
<COLUMN>29</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::AutoBuffer&lt;__int64,1&gt;::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::AutoBuffer&lt;__int64,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$AutoBuffer@_J$00@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>973</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::AutoBuffer&lt;__int64,1&gt;::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>utility.hpp</FILENAME>
<LINE>973</LINE>
<COLUMN>29</COLUMN>
</SFA>
<DEFECTCODE>26495</DEFECTCODE>
<DESCRIPTION>未初始化变量 cv::AutoBuffer&lt;double,1&gt;::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
<FUNCTION>cv::AutoBuffer&lt;double,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$AutoBuffer@N$00@cv@@QEAA@XZ</DECORATED>
<FUNCLINE>973</FUNCLINE>
<ADDITIONALINFO>
<targetSymbol>cv::AutoBuffer&lt;double,1&gt;::buf</targetSymbol>
</ADDITIONALINFO>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>173</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,3,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$02$00@cv@@QEAA@MMM@Z</DECORATED>
<FUNCLINE>169</FUNCLINE>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>173</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“3”超出了“0”至“2”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,3,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$02$00@cv@@QEAA@MMM@Z</DECORATED>
<FUNCLINE>169</FUNCLINE>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>165</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,2,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$01$00@cv@@QEAA@MM@Z</DECORATED>
<FUNCLINE>161</FUNCLINE>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>165</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“2”超出了“0”至“1”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,2,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$01$00@cv@@QEAA@MM@Z</DECORATED>
<FUNCLINE>161</FUNCLINE>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>181</LINE>
<COLUMN>4</COLUMN>
</SFA>
<DEFECTCODE>6294</DEFECTCODE>
<DESCRIPTION>定义错误的 for-loop。未执行循环正文。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,4,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$03$00@cv@@QEAA@MMMM@Z</DECORATED>
<FUNCLINE>177</FUNCLINE>
<PATH></PATH>
</DEFECT><DEFECT>
<SFA>
<FILEPATH>D:\cpp_lib\opencv-cpp\opencv\build\include\opencv2\core\</FILEPATH>
<FILENAME>matx.inl.hpp</FILENAME>
<LINE>181</LINE>
<COLUMN>43</COLUMN>
</SFA>
<DEFECTCODE>6201</DEFECTCODE>
<DESCRIPTION>索引“4”超出了“0”至“3”的有效范围(对于可能在堆栈中分配的缓冲区“this-&gt;val”)。</DESCRIPTION>
<FUNCTION>cv::Matx&lt;float,4,1&gt;::{ctor}</FUNCTION>
<DECORATED>??0?$Matx@M$03$00@cv@@QEAA@MMMM@Z</DECORATED>
<FUNCLINE>177</FUNCLINE>
<PATH></PATH>
</DEFECT></DEFECTS>

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save