main
parent
1455f179e7
commit
c465ec772a
Before Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 38 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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,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,3 @@
|
||||
#pragma once
|
||||
|
||||
#include "resource.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,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,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,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.
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\|
|
Binary file not shown.
Binary file not shown.
@ -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.
Binary file not shown.
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.
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
@ -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);
|
||||
}
|
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
D:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\TEAM TOOLS\STATIC ANALYSIS TOOLS\\RULE SETS\NATIVERECOMMENDEDRULES.RULESET
|
Binary file not shown.
Binary file not shown.
@ -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.
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\|
|
Binary file not shown.
Binary file not shown.
@ -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
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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<cv::detail::CompressedRectilinearProjector>::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
|
||||
<FUNCTION>cv::detail::RotationWarperBase<cv::detail::CompressedRectilinearProjector>::{ctor}</FUNCTION>
|
||||
<DECORATED>??0?$RotationWarperBase@UCompressedRectilinearProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
|
||||
<FUNCLINE>188</FUNCLINE>
|
||||
<ADDITIONALINFO>
|
||||
<targetSymbol>cv::detail::RotationWarperBase<cv::detail::CompressedRectilinearProjector>::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<cv::detail::CompressedRectilinearPortraitProjector>::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
|
||||
<FUNCTION>cv::detail::RotationWarperBase<cv::detail::CompressedRectilinearPortraitProjector>::{ctor}</FUNCTION>
|
||||
<DECORATED>??0?$RotationWarperBase@UCompressedRectilinearPortraitProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
|
||||
<FUNCLINE>188</FUNCLINE>
|
||||
<ADDITIONALINFO>
|
||||
<targetSymbol>cv::detail::RotationWarperBase<cv::detail::CompressedRectilinearPortraitProjector>::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<cv::detail::PaniniProjector>::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
|
||||
<FUNCTION>cv::detail::RotationWarperBase<cv::detail::PaniniProjector>::{ctor}</FUNCTION>
|
||||
<DECORATED>??0?$RotationWarperBase@UPaniniProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
|
||||
<FUNCLINE>188</FUNCLINE>
|
||||
<ADDITIONALINFO>
|
||||
<targetSymbol>cv::detail::RotationWarperBase<cv::detail::PaniniProjector>::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<cv::detail::PaniniPortraitProjector>::projector_。始终初始化成员变量(type.6)。</DESCRIPTION>
|
||||
<FUNCTION>cv::detail::RotationWarperBase<cv::detail::PaniniPortraitProjector>::{ctor}</FUNCTION>
|
||||
<DECORATED>??0?$RotationWarperBase@UPaniniPortraitProjector@detail@cv@@@detail@cv@@QEAA@XZ</DECORATED>
|
||||
<FUNCLINE>188</FUNCLINE>
|
||||
<ADDITIONALINFO>
|
||||
<targetSymbol>cv::detail::RotationWarperBase<cv::detail::PaniniPortraitProjector>::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<enum cvflann::flann_algorithm_t>::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<enum cvflann::flann_centers_init_t>::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<__int64,1>::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
|
||||
<FUNCTION>cv::AutoBuffer<__int64,1>::{ctor}</FUNCTION>
|
||||
<DECORATED>??0?$AutoBuffer@_J$00@cv@@QEAA@XZ</DECORATED>
|
||||
<FUNCLINE>973</FUNCLINE>
|
||||
<ADDITIONALINFO>
|
||||
<targetSymbol>cv::AutoBuffer<__int64,1>::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<double,1>::buf。始终初始化成员变量(type.6)。</DESCRIPTION>
|
||||
<FUNCTION>cv::AutoBuffer<double,1>::{ctor}</FUNCTION>
|
||||
<DECORATED>??0?$AutoBuffer@N$00@cv@@QEAA@XZ</DECORATED>
|
||||
<FUNCLINE>973</FUNCLINE>
|
||||
<ADDITIONALINFO>
|
||||
<targetSymbol>cv::AutoBuffer<double,1>::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<float,3,1>::{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->val”)。</DESCRIPTION>
|
||||
<FUNCTION>cv::Matx<float,3,1>::{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<double,3,1>::{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->val”)。</DESCRIPTION>
|
||||
<FUNCTION>cv::Matx<double,3,1>::{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<float,2,1>::{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->val”)。</DESCRIPTION>
|
||||
<FUNCTION>cv::Matx<float,2,1>::{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<double,2,1>::{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->val”)。</DESCRIPTION>
|
||||
<FUNCTION>cv::Matx<double,2,1>::{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<float,4,1>::{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->val”)。</DESCRIPTION>
|
||||
<FUNCTION>cv::Matx<float,4,1>::{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<double,4,1>::{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->val”)。</DESCRIPTION>
|
||||
<FUNCTION>cv::Matx<double,4,1>::{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.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue