x
dvpInt32 callback1(dvpHandle handle, dvpStreamEvent event, void *pContext, dvpFrame *pFrame, void *pBuffer){ MainWindow* mainwindow = (MainWindow*)pContext; if (pFrame->format == FORMAT_MONO) { mainwindow->process(cv::Mat(pFrame->iHeight, pFrame->iWidth, CV_8UC1, pBuffer)); } else if (pFrame->format == FORMAT_BGR24) { mainwindow->process(cv::Mat(pFrame->iHeight, pFrame->iWidth, CV_8UC3, pBuffer)); } return 0;}
dvpInt32 callback2(dvpHandle handle, dvpStreamEvent event, void *pContext, dvpFrame *pFrame, void *pBuffer){ MainWindow* mainwindow = (MainWindow*)pContext; if (pFrame->format == FORMAT_MONO) { mainwindow->process(cv::Mat(pFrame->iHeight, pFrame->iWidth, CV_8UC1, pBuffer)); } else if (pFrame->format == FORMAT_BGR24) { mainwindow->process(cv::Mat(pFrame->iHeight, pFrame->iWidth, CV_8UC3, pBuffer)); } return 0;}
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this);
int i; dvpCameraInfo info[16]; dvpEnum(i, &info[i]);
dvpOpenByName(info[0].FriendlyName, OPEN_NORMAL, &m_handle1); dvpOpenByName(info[0].FriendlyName, OPEN_NORMAL, &m_handle2);
dvpRegisterStreamCallback(m_handle1, callback1, STREAM_EVENT_FRAME_THREAD, this); dvpRegisterStreamCallback(m_handle2, callback2, STREAM_EVENT_FRAME_THREAD, this);
m_worker1 = new Worker; m_worker1->moveToThread(&m_worker_thread1); connect(&m_worker_thread1, &QThread::finished, m_worker1, &QObject::deleteLater); connect(this, &MainWindow::beginWork, m_worker1, &Worker::beginWork);// connect(m_worker1, &Worker::endWork, this, &MainWindow::endWork); m_worker_thread1.start();}
MainWindow::~MainWindow(){ delete ui; m_worker_thread1.quit(); m_worker_thread1.wait();}
void MainWindow::process(cv::Mat data){ m_worker1->setData(data); emit beginWork();}
void MainWindow::endWork(QImage image){// glWidget->setImage(image);}
Worker::Worker(QObject *parent) : QObject(parent){
}
void Worker::setData(cv::Mat data){ m_mutex.lock(); data.copyTo(m_data); m_mutex.unlock();}
void Worker::beginWork(){// cuda(m_data);// emit endWork();}xxxxxxxxxxsudo apt install libavcodec-extra libfaad2 libmad0pulseaudio --startVlcCommon::setPluginPath("/usr/lib/aarch64-linux-gnu/vlc/plugins");QStringList args; args << "--aout=alsa" // 使用 ALSA 音频输出 << "--verbose=2";vlc udp://@:1234 --verbose=2
vcpkg 编译 Qt6 WebEngine

xxxxxxxxxxgit clone https://github.com/microsoft/vcpkg.gitsudo apt-get install build-essential tar curl zip unzipsudo apt-get install libxcb-cursor0 libxcb-cursor-devsudo apt-get install autoconf automake libtoolsudo apt-get install ninja-buildsudo apt-get install autoconf-archivesudo apt-get install mesonsudo apt install pkg-config python3 python3-pip python3-setuptoolspip3 install --user mesonpip3 install --user jinja2sudo apt-get install bisonsudo apt install libxtst-devsudo apt-get install libx11-xcb-dev libgl1-mesa-dev libxrender-dev libxi-devsudo apt-get install libxcb.*-devsudo apt install libx11-xcb-dev libxcb1-dev libxcb-util-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev./vcpkg install --triplet=x64-linux-dynamic qt5-webenginevcpkg.exe install --editable qtwebengine --x-buildtrees-root=D:/b
git clone https://github.com/microsoft/vcpkg.git
vcpkg install gdal --triplet=x64-mingw-dynamic
xxxxxxxxxxnet use Z: /deletepyinstaller --hidden-import openpyxl.cell._writer main.py
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:\chrome_dev"
xxxxxxxxxx键名 十六进制值 按键Qt::Key_Escape 0x01000000 EscQt::Key_Tab 0x01000001 TabQt::Key_Backtab 0x01000002 TabQt::Key_Backspace 0x01000003 退格Qt::Key_Return 0x01000004 回车(字母)Qt::Key_Enter 0x01000005 回车(小键盘)Qt::Key_Insert 0x01000006 插入Qt::Key_Delete 0x01000007 删除Qt::Key_Pause 0x01000008 Pause/BreakQt::Key_Print 0x01000009 打印键Qt::Key_Home 0x01000010 Home 键Qt::Key_End 0x01000011 结束键Qt::Key_Left 0x01000012 ←Qt::Key_Up 0x01000013 ↑Qt::Key_Right 0x01000014 →Qt::Key_Down 0x01000015 ↓Qt::Key_PageUp 0x01000016 翻页(上)Qt::Key_PageDown 0x01000017 翻页(下)Qt::Key_Shift 0x01000020 ShiftQt::Key_Control 0x01000021 CtrlQt::Key_Alt 0x01000023 Alt (左)Qt::Key_AltGr 0x01001103 Alt (右)Qt::Key_CapsLock 0x01000024 大写锁定Qt::Key_NumLock 0x01000025 数字锁定Qt::Key_ScrollLock 0x01000026 卷动锁定Qt::Key_F1 到 Qt::Key_F35 0x01000030 到 0x01000052 F1 到 F35Qt::Key_Menu 0x01000055 菜单Qt::Key_Space 0x20 空格Qt::Key_Exclam 0x21 ! 惊叹号Qt::Key_QuoteDbl 0x22 双引号Qt::Key_NumberSign 0x23 # 号Qt::Key_Dollar 0x24 $ 美元符号Qt::Key_Percent 0x25 % 百分号Qt::Key_Ampersand 0x26 & 取地址Qt::Key_Apostrophe 0x27 ' 单引号Qt::Key_ParenLeft 0x28 ( 左括号Qt::Key_ParenRight 0x29 ) 右括号Qt::Key_Asterisk 0x2a * 星号Qt::Key_Plus 0x2b + 加号Qt::Key_Comma 0x2c , 逗号Qt::Key_Minus 0x2d - 减号Qt::Key_Period 0x2e . 小数点Qt::Key_Slash 0x2f / 斜杠Qt::Key_0 到 Qt::Key_9 0x30 到 0x39 0 到 9 数字Qt::Key_Colon 0x3a : 冒号Qt::Key_Semicolon 0x3b ; 分号Qt::Key_Less 0x3c < 小于号Qt::Key_Equal 0x3d = 等号Qt::Key_Greater 0x3e > 大于号Qt::Key_Question 0x3f ? 问号Qt::Key_At 0x40 @Qt::Key_A 到 Qt::Key_Z 0x41 到 0x5a a 到 z 字母Qt::Key_BracketLeft 0x5b [ 左方括号Qt::Key_Backslash 0x5c \ 反斜杠Qt::Key_BracketRight 0x5d ] 右方括号Qt::Key_AsciiCircum 0x5e ^ 插入符号Qt::Key_Underscore 0x5f _ 下划线Qt::Key_QuoteLeft 0x60 “ 左双引号Qt::Key_BraceLeft 0x7b { 左花括号Qt::Key_Bar 0x7c | 竖号Qt::Key_BraceRight 0x7d } 右花括号Qt::Key_AsciiTilde 0x7e ~ 波浪号Qt::Key_nobreakspace 0x0a0 不换行空格Qt::Key_exclamdown 0x0a1 ! 惊叹号Qt::Key_cent 0x0a2 美分键Qt::Key_sterling 0x0a3 英镑键Qt::Key_currency 0x0a4 货币键Qt::Key_yen 0x0a5 日元键Qt::Key_Back 0x01000061 后退键Qt::Key_Forward 0x01000062 前进键Qt::Key_Stop 0x01000063 停止键Qt::Key_Refresh 0x01000064 刷新键Qt::Key_VolumeDown 0x01000070 降低音量键Qt::Key_VolumeMute 0x01000071 音量静音键Qt::Key_VolumeUp 0x01000072 提高音量键Qt::Key_HomePage 0x01000090 首页键Qt::Key_Favorites 0x01000091 收藏键Qt::Key_Search 0x01000092 搜索键
xxxxxxxxxxgit clone https://github.com/microsoft/vcpkg.gitcd D:/vcpkgbootstrap-vcpkg.batvcpkg.exe install --editable qtwebengine[proprietary-codecs] --x-buildtrees-root=D:/b
win11 sdk version 10.0.22621.0
14.42.34438.0
Visual Studio Community 2022 17.13.6
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.43.34810 版
xxxxxxxxxxFAILED: gen/components/resources/ssl/ssl_error_assistant/ssl_error_assistant.pbD:\b\qtwebengine\src\here-src-6-3c15aa4209\src\3rdparty\chromium\components\resources\protobufs\binary_proto_generator.pyprint(">>> opts =", opts)print(">>> sys.path =", sys.path)卸载自带的 python3.12
安装vs2022时 vcredist报错,通过控制面板无法清除干净原有的 vcredist2015-2019
使用工具 Windows Installer Cleanup Utility
目的 解决windows下 可预览svg图标.
方案 如果需要在 Windows 的资源管理器中预览 SVG 图标,就像预览 JPG、PNG 等图片一样方便。
下载svg扩展
https://github.com/tibold/svg-explorer-extension/releases https://download.cnet.com/svg-explorer-extension/3000-2248_4-78237543.html
打开cmd窗口, 清空数据
xxxxxxxxxxTASKKILL /IM explorer* /FDEL "%localappdata%\IconCache.db" /Aexplorer.exe你正在配置 Qt 程序的 manifest 和资源文件,使 app.exe 以 管理员权限运行(requireAdministrator),流程基本是这样的:
创建 app.exe.manifest 文件
内容如下(用于申请管理员权限):
xxxxxxxxxx<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevel level="requireAdministrator" uiAccess="false"/></requestedPrivileges></security></trustInfo></assembly>
创建 res.rc 文件
内容如下(把 manifest 包含到资源中):
xxxxxxxxxx1 24 "app.exe.manifest"
在 .pro 文件中添加资源定义:
xxxxxxxxxxRC_FILE = res.rc
这样编译出来的 .exe 在运行时会自动弹出“以管理员身份运行”提示(UAC)。
app.exe.manifest 和 res.rc 要放在 .pro 同一目录下或正确配置路径。
RC_FILE = res.rc 必须写在 .pro 文件中,否则资源文件不会被编译器识别。
资源文件 .rc 只能在 Windows 下生效。
如果你用的是 qmake,而不是 cmake,上面的写法是兼容的。
.\bin\binarycreator --offline-only -t .\bin\installerbase -c .\config\config.xml -p .\packages MiniStarCut