网站空间大小有什么用/福州网站排名推广
CRectTracker 类并非 Microsoft Foundation Class (MFC) 库中应用很广泛的一个类,一般教科书中很少有提到。在编程中如果需编写选择框绘制以及选择框大小调整、移动等程序时,用CRectTracker 类就会做到事半而功倍。下面详细介绍MFC CRectTracker 类。
MFC CRectTracker 类详解
CRectTracker 类的构造函数
CRectTracker 类的构造函数的原型如下:
CRectTracker();
CRectTracker(
LPCRECT lpSrcRect,
UINT nStyle);
参数:
lpSrcRect 矩形对象的指针
nStyle CRectTracker 对象的样式, 有一下几种样式:
CRectTracker::solidLine 对矩形边框使用实线。
CRectTracker::dottedLine 对矩形边框使用虚线。
CRectTracker::hatchedBorder 对矩形边框使用带阴影的图案。
CRectTracker::resizeInside 调整位于矩形内的图柄的大小。
CRectTracker::resizeOutside 调整位于矩形外的图柄的大小。
CRectTracker::hatchInside 带阴影的图案覆盖整个矩形。
默认构造函数使用来自 lpSrcRect CRectTracker 的值初始化 对象,并将其他大小初始化为
系统默认值。 如果创建对象时没有参数,那么 m_rect 和 m_nStyle 数据成员就不会被初
始化。
CRectTracker 类的公共方法(公有成员函数)
CRectTracker 类的公共方法如下:
下面逐一介绍CRectTracker 类的公共方法。
CRectTracker::AdjustRect
CRectTracker::AdjustRect是一个虚函数,使用调整大小图柄调整跟踪矩形的大小时由框架调用。其原型如下:
virtual void AdjustRect(
int nHandle,
LPRECT lpRect);
参数:
nHandl 所用图柄的索引
lpRect 指向矩形当前大小的指针。(矩形的大小由其高度和宽度决定。)
CRectTracker::Draw
调用此函数以绘制矩形的外部线和内部区域。其原型如下:
void Draw(CDC* pDC) const;
参数: pDC 指向要进行绘制的设备上下文的指针。
CRectTracker::DrawTrackerRect
CRectTracker::DrawTrackerRect是一个虚函数,每当跟踪器的位Track 或TrackRubberBand 成员函数内部发生变化时由框架调用。其原型如下:
virtual void DrawTrackerRect(
LPCRECT lpRect,
CWnd* pWndClipTo,
CDC* pDC,
CWnd* pWnd);
参数:
lpRect 指向包含要绘制的矩形RECT的指针。
pWndClipTo 指向用于剪切矩形的窗口的指针。
pDC 指向要进行绘制的设备上下文的指针。
pWnd 指向要在其中进行绘制的窗口的指针。
注解:默认实现调用 CDC::DrawFocusRect ,这将绘制一个虚线矩形。重写此函数以在跟踪操作期间提供不同的反馈。
CRectTracker::GetHandleMask
CRectTracker::GetHandleMask是一个虚函数,框架调用此成员函数来检索矩形调整大小图柄的掩码。其原型如下:
virtual UINT GetHandleMask() const;
返回值:CRectTracker 项的调整大小图柄的掩码。
一个矩形有 8 个调整大小图柄,编号为 0-7。 每个调整大小图柄由掩码中的一个位表
示;该位的值为 2^ n,其中 n 是调整大小图柄的编号。
重写此成员函数以隐藏或显示指示的调整大小图柄。
CRectTracker::GetTrueRect
调用此函数以检索矩形的坐标。其原型如下:
void GetTrueRect(LPRECT lpTrueRect) const;
参数:lpTrueRect 指向将包含CRectTracker 对象的设备坐标的RECT结构的指针。
CRectTracker::HitTest
调用此函数以了解用户是否已抓取一个调整大小图柄。其原型如下:
int HitTest(CPoint point) const;
参数:point 要测试的点,以设备坐标表示。
返回值:返回的值基于枚举类型 CRectTracker::TrackerHit ,可以具有以下值之一:
CRectTracker::hitNothing -1
CRectTracker::hitTopLeft 0
CRectTracker::hitBottomRight 2
CRectTracker::hitBottomLeft 3
CRectTracker::hitTop 4
CRectTracker::hitRight 5
CRectTracker::hitBottom 6
CRectTracker::hitLeft 7
CRectTracker::hitMiddle 8
CRectTracker::NormalizeHit
调用此函数以转换可能反转的图柄。其原型如下:
int NormalizeHit(int nHandle) const;
参数:nHandle 用户选择的图柄。
返回值:规范化图柄的索引。
CRectTracker::OnChangedRect
CRectTracker::OnChangedRect是一个虚函数,每当在调用Track期间跟踪器矩形发生变化时由框架调用。其原型如下:
virtual void OnChangedRect(const CRect& rectOld);
参数: rectOld 包含 CRectTracker 对象的旧设备坐标。
CRectTracker::SetCursor
当光标在CRectTracker 对象的区域上时,调用此函数来改变光标的形状。从处理 WM_SETCURSOR 消息(通常为 OnSetCursor )的窗口的函数内部调用此函数。其原型如下:
BOOL SetCursor(CWnd* pWnd,UINT nHitTest) const;
参数:
pWnd 指向当前包含光标的窗口。
nHitTest 上一命中测试的结果,来自WM_SETCURSOR消息。
返回值:如果上一命中是在跟踪器矩形上,则为非零值;否则为 0。
CRectTracker::Track
调用此函数以显示矩形大小的用户界面。其原型如下:
BOOL Track(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = FALSE,
CWnd* pWndClipTo = NULL);
参数:
pWnd 包含矩形的窗口对象。
Point 相对于工作区的当前鼠标位置的设备坐标。
bAllowInvert 如果为 TRUE,则可以沿 x 轴或 y 轴反转矩形;否则为 FALSE。
pWndClipTo 绘制操作将剪切到的窗口。 如果为 NULL,pWnd 将用作剪切矩形。
返回值:如果按下 ESC 键,跟踪过程会停止,跟踪器中存储的矩形不会改变,并且返回 0。 如果更改已提交,通过移动鼠标并释放鼠标左键后,会在跟踪器的矩形中记录新的位置和/或大小,并返回非零值。
CRectTracker::TrackRubberBand
调用此函数以执行橡皮筋选择。该函数的原型如下:
BOOL TrackRubberBand(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = TRUE);
参数:
pWnd 包含矩形的窗口对象。
point 相对于工作区的当前鼠标位置的设备坐标。
bAllowInvert 如果为 TRUE,则可以沿 x 轴或 y 轴反转矩形;否则为 FALSE。
返回值:如果鼠标已移动且矩形不为空,则为非零值;否则为 0。
CRectTracker 类的公共数据成员(成员变量)
CRectTracker 类的公共数据成员(成员变量)如下:
上面已经详细介绍了CRectTracker类,下面用一个对话框程序来演示CRectTracker类的用法。
CRectTracker类应用示例
新建一个对话框Project来演示,CRectTracker类的用法。对话框界面如下:
为简化图像处理程序,这里会用到OpenCV,OpenCV的配置如下(这里使用的4.90,用其他低一些的版本也快):
由于用OpenCV显示图像,显示窗口难以嵌入MFC对话框。 为便于图像显示许为对话框程序添加Mat对象转Cimage对象程序及图像显示程序。
Mat对象转Cimage对象程序的代码如下:
void CRectTrackerTestDlg::MatToCImage(Mat& src, CImage& dst)
{if (src.empty() || (src.type() != CV_8UC3 && src.type() != CV_8UC1)) {return;}// 如果CImage对象有附加图像就分离并销毁图像if (!dst.IsNull())dst.Destroy();//创建CImage对象附加图像,需与源图像大小类型一致dst.Create(src.cols, src.rows, 8 * src.channels());if (src.channels() == 1){//将源位图转成八位灰度图时,CImage对象需用到颜色表,需定义一个RGBQUAD数组,并填充该数组RGBQUAD* colorTable = new RGBQUAD[256];for (int i = 0; i < 256; i++){colorTable[i].rgbRed = i;colorTable[i].rgbGreen = i;colorTable[i].rgbBlue = i;}//设置颜色表RGB分量值dst.SetColorTable(0, 255, colorTable);}int rows = src.rows;int cols = src.cols;uchar channels = src.channels();//内存中的数据传送,注意这里是逐行传送。for (int i = 0; i < rows; i++){memcpy(dst.GetPixelAddress(0, i), src.ptr<uchar>(i), cols * channels);}
}
图像显示程序的代码如下:
if (mImage.IsNull())MessageBox(L"No Image to Display!", L"系统提示", MB_ICONWARNING | MB_OK);
else
{CClientDC dc(this);mImage.BitBlt(dc.GetSafeHdc(), 0, 0, SRCCOPY);
}
下面再为对话框按钮添加事件处理程序代码,”打开图像“按钮的事件处理程序的代码如下:
void CRectTrackerTestDlg::OnBnClickedOpen()
{mString = "正在进行打开图像操作...";mInformation.SetWindowTextW(mString);CFileDialog fdlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("All files(*.*)|*.*||"));if (fdlg.DoModal() == IDOK){m_Path = fdlg.GetPathName();m_strEx = fdlg.GetFileExt();m_strName = fdlg.GetFileName();m_Path.ReleaseBuffer();m_strEx.ReleaseBuffer();m_strName.ReleaseBuffer();m_str = CT2A(m_Path);src = imread(m_str);dst = src;if (src.empty()){mString.Format(L"打开图像文件%s失败,文件格式不正确或文件已损坏!", m_strName);mInformation.SetWindowTextW(mString);}else{MatToCImage(dst, mImage); //send Mat object data to CImage objiect//DispalyImage(mImage); //dispaly imageInvalidate();mString.Format(L"已打开:%s ", m_Path);mInformation.SetWindowTextW(mString);}}else{mString = "已取消打开图像!";mInformation.SetWindowTextW(mString);}
}
由于打开图像的代码中DisplayImage(mImage)已被屏蔽掉,需在Opaint中添加图像显示代码,如下:
“缩放图像”按钮的事件处理程序的代码如下:
void CRectTrackerTestDlg::OnBnClickedScaleImage()
{UpdateData(1);int nWidth, nHeight;nWidth = (int)(fscale * dst.cols) / 4 * 4; //fscale为按钮旁边编辑框绑定变量用以设定缩放系数nHeight = fscale * dst.rows;resize(dst, dst, Size(nWidth, nHeight));MatToCImage(dst, mImage); //send Mat object data to CImage objiectInvalidate();mString.Format(L"缩放操作已完成,现在图像大小是缩放前的 %f 倍", fscale);mInformation.SetWindowTextW(mString);
}
为“选择ROI区域”按钮添加事件处理程序,“选择ROI区域”按钮的事件处理程序代码如下:
void CRectTrackerTestDlg::OnBnClickedSelectRoiArea()
{if (bPikFrameEanble){bPikFrameEanble = false;pickRect = CRect(0, 0, 0, 0);pickFrame.m_rect = pickRect;Invalidate();}bDrawPickFrame = true;
}
仅有上面这个事件处理程序,是没法实现选择ROI区域的,首先需声明CRectTracker变量,变量还需初始化,然后在鼠标消息处理程序中添加:选择框绘制、大小调整、移动等相关代码。这里声明的CRectTracker变量及其相关变量如下:
CRectTracker变量初始化的代码如下:
在OnLButtonDown(UINT nFlags, CPoint point)函数中加入如下代码:
void CRectTrackerTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{CDC* pDC = GetDC();if (bDrawPickFrame){bStartDraw = true;bDrawPickFrame = false;}else{if (bPikFrameEanble){pickFrame.Track(this, point);//pickFrame.Draw(pDC);pickFrame.GetTrueRect(&pickRect);Invalidate();}}ReleaseDC(pDC);CDialogEx::OnLButtonDown(nFlags, point);
}
再在OnLButtonUp(UINT nFlags, CPoint point)中加入代码:代码如下:
void CRectTrackerTestDlg::OnLButtonUp(UINT nFlags, CPoint point)
{CDC* pDC = GetDC();if (bStartDraw){bStartDraw = false;bPikFrameEanble = true;pickFrame.TrackRubberBand(this, point);pickFrame.Draw(pDC);pickFrame.GetTrueRect(&pickRect);}ReleaseDC(pDC);CDialogEx::OnLButtonUp(nFlags, point);
}
到此可以实现选择ROI区域了,试运行程序,结果如下:
点击打开图像按钮,选择图像文件,如下:
点击打开,结果如下:
点击“选取ROI区域”按钮,将鼠标指针移动到图像适当位置,点击鼠标左键(只能一次),然后拖动鼠标,可以看到随着鼠标指针移动有一个变化的矩形,在适当位置再次点击鼠标左键,即绘制出了一个选择框,如下:
将鼠标指针移动到选择矿内,按下鼠标左键(不松),拖动鼠标,即可移动选择框。将鼠标指针移动到选择框的图柄上,按下鼠标左键(不松),拖动鼠标,即可改变选择框的大小。但是目前鼠标的指针不会随着不同的操作变化。
现在来改善这一不足,添加OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)函数,在OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)函数中加入如下代码:
BOOL CRectTrackerTestDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{if (pWnd == this && pickFrame.SetCursor(this, nHitTest)){// 如果SetCursor成功设置了光标形状,则返回TRUE return TRUE;}return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}
再次试运行,点击“选取ROI区域”按钮,绘制选取框,这时可以看到当鼠标指针移动到选取框内时,鼠标指针变成了4箭头(移动)图标,指针移动到不同的图柄上时,指针图标也会发生改变。
添加"截取ROI区域"按钮的事件处理程序代码,代码如下:
void CRectTrackerTestDlg::OnBnClickedKeepRoiArea()
{dst = dst(Rect(pickRect.left, pickRect.top, pickRect.Width(), pickRect.Height()));MatToCImage(dst, mImage);bPikFrameEanble = false;pickRect = CRect(0, 0, 0, 0);pickFrame.m_rect = pickRect;mString = "截取ROI区域操作已完成";mInformation.SetWindowTextW(mString);Invalidate();
}
添加"保存图像"按钮的事件处理程序代码,代码如下:
void CRectTrackerTestDlg::OnBnClickedSaveImage()
{mString = "正在进行图像存储操作...";mInformation.SetWindowTextW(mString);CString mfilter = _T("图片文件(*.bmp *.png *.jpg *.webp *.tif)|*.bmp;*.png;*jpg,*.webp,*.tif|All Files (*.*)|*.*||");CFileDialog fdlg(FALSE, NULL, 0, OFN_OVERWRITEPROMPT, mfilter, NULL);if (fdlg.DoModal() == IDOK){m_Path = fdlg.GetPathName();m_strEx = fdlg.GetFileExt();m_strName = fdlg.GetFileName();m_Path.ReleaseBuffer();m_strEx.ReleaseBuffer();m_strName.ReleaseBuffer();}else{mString = "图像存储操作已被取消";mInformation.SetWindowTextW(mString);return;}if (m_strEx == "BMP" || m_strEx == "bmp" || m_strEx == "dib" || m_strEx == "TIF" || m_strEx == "tif" || m_strEx == "tiff" || m_strEx == "PNG" || m_strEx == "png"|| m_strEx == "jpg" || m_strEx == "JPG" || m_strEx == "jpe" || m_strEx == "jpeg" || m_strEx == "jp2" || m_strEx == "webp" || m_strEx == "avif" || m_strEx == "pbm"|| m_strEx == "pgm" || m_strEx == "ppm" || m_strEx == "pxm" || m_strEx == "pnm" || m_strEx == "pfm" || m_strEx == "sr" || m_strEx == "ras" || m_strEx == "exr"|| m_strEx == "hdr" || m_strEx == "pic"){m_str = CT2A(m_Path);imwrite(m_str, dst);mString.Format(L"图像文件已存储到:%s ", m_Path);mInformation.SetWindowTextW(mString);}else if (m_strEx == ""){m_Path += ".bmp";m_str = CT2A(m_Path);imwrite(m_str, dst);mString.Format(L"图像文件已存储到:%s ", m_Path);mInformation.SetWindowTextW(mString);}
}
到此,示例程序的代码已完成。试运行,结果如下:
点击“打开图像”按钮,选择打开图像文件:
点击“打开”按钮,打开图像,如下:
在“缩放图像”按钮旁的输入框中输入2.5,然后点击“缩放图像”按钮,结果如下:
点击“选取ROI区域”按钮,将鼠标指针移动到图片适当位置,点击鼠标左键,然后拖动鼠标到适当位置,点击鼠标左键,选取图像中自己感兴趣的区域,如下:
点击“截取ROI区域”按钮,结果如下:
点击“保存图像”按钮,选定路径,输入存储图像名:
点击保存按钮,结果如下:
再点击“打开图像”按钮,选择刚才存储的图片:
点击“打开”按钮,结果如下:
说明存储的图片可以正常打开。本示例程序测试到此结束。本示例程序的源代码已上传到CSDN,如果需要查看细节,可以去下载。下载链接为:https://download.csdn.net/download/billliu66/89541184
如果需要重新编译,因OpenCV的路径及版本不一定一致,一般需要重新配置 OpenCV。本示例程序是基于OpenCv4.90及VS2022编写。
相关文章:

MFC CRectTracker 类用法详解
CRectTracker 类并非 Microsoft Foundation Class (MFC) 库中应用很广泛的一个类,一般教科书中很少有提到。在编程中如果需编写选择框绘制以及选择框大小调整、移动等程序时,用CRectTracker 类就会做到事半而功倍。下面详细介绍MFC CRectTracker 类。 M…...

好玩的调度技术-场景编辑器
好玩的调度技术-场景编辑器 文章目录 好玩的调度技术-场景编辑器前言一、演示一、代码总结好玩系列 前言 这两天写前端写上瘾了,顺手做了个好玩的东西,好玩系列也好久没更新,正好作为素材写一篇文章,我真的觉得蛮好玩的ÿ…...

提高自动化测试脚本编写效率 5大关键注意事项
提高自动化测试脚本编写效率能加速测试周期,减少人工错误,提升软件质量,促进项目按时交付,增强团队生产力和项目成功率。而自动化测试脚本编写效率低下,往往会导致测试周期延长,增加项目成本,延…...

护眼落地灯哪个更护眼?2024年度最值得入手的5款护眼大路灯推荐
落地灯和台灯哪个更护眼?之所以我们眼睛经常酸痛,很大部分的原因是因为我们长时间在不良光线下,将注意力集中在屏幕或书本上会导致眼睛肌肉过度使用,引发疲劳和酸痛。但也不排除不正确的坐姿或者工作环境缺乏适当的照明引起的&…...

DP讨论——适配器、桥接、代理、装饰器模式通用理解
学而时习之,温故而知新。 共性 适配器、桥接、代理和装饰器模式,实现上基本没啥区别,怎么区分?只能从上下文理解,看目的是啥。 它们,我左看上看下看右看,发现理解可以这么简单:都是A类调用B/…...

Apache AGE的MATCH子句
MATCH子句允许您在数据库中指定查询将搜索的模式。这是检索数据以在查询中使用的主要方法。 通常在MATCH子句之后会跟随一个WHERE子句,以添加用户定义的限制条件到匹配的模式中,以操纵返回的数据集。谓词是模式描述的一部分,不应被视为仅在匹…...

Netty Websocket
一、WebSocket 协议概述 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许服务端主动向客户端推送数据,从而实现了实时通信。WebSocket 建立在 HTTP 之上,但与 HTTP 的轮询(Polling)和长轮询(Long Pol…...

用户注册业务逻辑、接口设计和实现、前端逻辑
一、用户注册业务逻辑分析 二、用户注册接口设计和定义 2.1. 设计接口基本思路 对于接口的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接口。设计接口的思路: 分析要实现的业务逻辑: 明确在这个业务中涉及到几个相关子…...

ubuntu搭建harbor私仓
1、环境准备 链接: https://pan.baidu.com/s/1q4XBWPd8WdyEn4l253mpUw 提取码: 7ekx --来自百度网盘超级会员v2的分享 准备一台Ubuntu 机器:192.168.124.165 将上面两个文件考入Ubuntu上面 2、安装harbor 安装Docker Harbor仓库以容器方式运行,需要先安装好docker,参考:…...

深层神经网络示例
维度说明: A[L]、Z[L]:(本层神经元个数、样本数) W[L]:(本层神经元个数、上层神经元个数) b[L]:(本层神经元个数、1) dZ[L]:dA[L] * g’A…...

vue中获取剪切板中的内容
目录 1.说明 2.示例 3.总结 1.说明 在系统中的画面或者时外部文件中进行拷贝处理后,在页面中可以获取剪切板的内容。 2.示例 方式①(直接获取) // 异步函数获取剪切板内容 async function getClipboardContent(ev: any) {try {ev.preventDefault()const clip…...

十五、【机器学习】【监督学习】- 神经网络回归
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...

知识图谱和 LLM:利用Neo4j驾驭大型语言模型(探索真实用例)
这是关于 Neo4j 的 NaLLM 项目的一篇博客文章。这个项目是为了探索、开发和展示这些 LLM 与 Neo4j 结合的实际用途。 2023 年,ChatGPT 等大型语言模型 (LLM) 因其理解和生成类似人类的文本的能力而风靡全球。它们能够适应不同的对话环境、回答各种主题的问题,甚至模拟创意写…...

目标检测入门:4.目标检测中的一阶段模型和两阶段模型
在前面几章里,都只做了目标检测中的目标定位任务,并未做目标分类任务。目标检测作为计算机视觉领域的核心人物之一,旨在从图像中识别出所有感兴趣的目标,并确定它们的类别和位置。现在目标检测以一阶段模型和两阶段模型为代表的。…...

zookeeper+kafka消息队列群集部署
kafka拓扑架构 zookeeper拓扑架构...

[K8S]一、Flink on K8S
Kubernetes | Apache Flink 先编辑好这5个配置文件,然后再直接执行 kubectl create -f ./ kubectl get all kubectl get nodes kubectl get pods kubectl get pod -o wide kubectl get cm -- 获取所有的configmap 配置文件 kubectl logs pod_name -- 查看…...

系统架构设计师教程 第3章 信息系统基础知识-3.1 信息系统概述
系统架构设计师教程 第3章 信息系统基础知识-3.1 信息系统概述 3.1.1 信息系统的定义3.1.1.1 信息系统3.1.1.2 信息化3.1.2 信息系统的发展3.1.2.1 初始阶段3.1.2.2 传播阶段3.1.2.3 控制阶段3.1.2.4 集成阶段3.1.2.5 数据管理阶段3.1.2.6 成熟阶段3.1.3 信息系统的分类3.…...

Gemma的简单理解;Vertex AI的简单理解,与chatGpt区别
目录 Gemma的简单理解 Vertex AI的简单理解 Gemma Vertex AI Gemma Vertex AI和chatcpt区别 一、定义与功能 二、技术特点 三、应用场景 四、获取与部署 Gemma的简单理解 定义与功能: Gemma是谷歌开源的一款大语言模型,它采用了Gemini架构,并提供了20亿(2B)和7…...

Lua 数组
Lua 数组 Lua 是一种轻量级的编程语言,广泛用于游戏开发、脚本编写和其他应用程序。在 Lua 中,数组是一种非常基础和重要的数据结构。本文将详细介绍 Lua 数组的概念、用法和操作方法。 数组的概念 在 Lua 中,数组实际上是一个列表&#x…...

游戏中的敏感词算法初探
在游戏中起名和聊天需要服务器判断是否含有敏感词,从而拒绝或屏蔽敏感词显示,这里枚举一些常用的算法和实际效果。 1.字符串匹配算法 常用的有KMP,核心就是预处理出next数组,也就是失配信息,时间复杂度在O(mn) 。还有个…...

使用Java和Apache Kafka Streams实现实时流处理应用
使用Java和Apache Kafka Streams实现实时流处理应用 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 引言 实时流处理已经成为现代应用开发中不可或缺的一部分。Apache Kafka Streams是一个强大的库…...

分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
前言 树形结构是一种很常见的数据结构,类似于现实生活中的树的结构,具有根节点、父子关系和层级结构。 所谓根节点,就是整个树的起始节点。 节点则是树中的元素,每个节点可以有零个或多个子节点,节点按照层级排列&a…...

【柴油机故障诊断】基于斑马优化算法ZOA优化柴油机故障诊断附Matlab代码
% 柴油机故障诊断 - 基于斑马优化算法(Zebra Optimization Algorithm,ZOA)优化Transformer模型 % 代码示例仅为演示用途,实际应用中可能需要根据具体情况进行适当修改 % 初始化参数 maxIterations = 100; % 最大迭代次数 populationSize = 50; % 种群大小 % 斑马优化算法…...

C1W4.Assignment.Naive Machine Translation and LSH
理论课:C1W4.Machine Translation and Document Search 文章目录 1. The word embeddings data for English and French words1.1The dataThe subset of dataLoad two dictionaries 1.2 Generate embedding and transform matricesExercise 1: Translating English…...

智能听诊器:宠物健康监测的革新者
宠物健康护理领域迎来了一项激动人心的技术革新——智能听诊器。这款创新设备以其卓越的精确度和用户友好的操作,为宠物主人提供了一种全新的健康监测方法。 使用智能听诊器时,只需将其放置在宠物身上,它便能立即捕捉到宠物胸腔的微小振动。…...

001、Mac系统上Stable Diffusion WebUI环境搭建
一、目标 如标题所述,在苹果电脑(Mac)上搭建一套Stable Diffusion本地服务,以实现本地AI生图目的。 二、安装步骤 1、准备源码【等价于准备软件】 # 安装一系列工具库,包括cmake,protobuf,rust,python3.10,git,wge…...

k8s一些名词解释
潮汐计算 是一种根据负载变化动态调整资源分配的计算模式。其核心思想是利用峰值和非峰值时段的资源需求差异,动态地扩展或缩减计算资源。在 Kubernetes 环境中,可以通过自动扩展(auto-scaling)机制,根据工作负载的变化自动调整计算资源,最大化资源利用率并减少不必要的…...

ArkUI组件——循环控制/List
循环控制 class Item{name: stringprice:number}private items:Array<Item> [new Item("A0",2399),new Item("BE",1999),new Item("Ro",2799)] ForEach(this.items,(item:Item) > {})List组件 列表List是一种复杂的容器,…...

定制开发AI智能名片商城微信小程序在私域流量池构建中的应用与策略
摘要 在数字经济蓬勃发展的今天,私域流量已成为企业竞争的新战场。定制开发AI智能名片商城微信小程序,作为私域流量池构建的创新工具,正以其独特的优势助力企业实现用户资源的深度挖掘与高效转化。本文深入探讨了定制开发AI智能名片商城微信…...

网络安全(含面试题版)
一、网络概念 网络:一组相互连接的计算机,多台计算机组成,使用物理线路进行连接 作用: 数据交换 资源共享 二、网络分类 计算机网络覆盖的地理区域决定了它的类型。一般分为局域网(LAN)、城域网(MAN)、广域网(WAN)。 三、www万维网…...