opencv中窗口置顶的方法

OpenCV 4.4在MFC中的应用 其实想要在MFC中也是很简单的,只要在*dlg.cpp的Init函数中添加一段类似把控件转换为窗口的代码就可以啦。如果只有一个文件用到了opencv的东西,那么可以直接在*dlg.cpp中添加头文件和using namespace cv就可以。//opencv显示图片。imshow("ImageShow",mat)就可以显示mat图片了。//千万不能用waikey(0),一直等在这里程序就不会继续下去了。这样就可以在名为:IDC_SHOWIMG的picture控件中显示图片或者视频文件了。 阅读详情

今天想将opencv中的窗口置顶,以便在任何时候都可以看到摄像头显示的内容。

opencv中通过cvGetWindowHandle可以获取窗口句柄。cvGetWindowHandle的返回值解释如下:

函数cvGetWindowHandle返回原始的窗口句柄(在Win32情况下返回HWND,GTK+情况下返回GtkWidget)

刚开始处理时,通过以下方法:

 HWND hWnd = (HWND)cvGetWindowHandle("raw");
  if (hWnd!= NULL) {
  BOOL bRet = ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE |SWP_NOMOVE);
  assert(bRet);
 }

返回值正确,但确没达到效果。经过一番验证,原来hWnd指向的不是“raw”窗口的句柄。通过GetWindowText获取的窗口标题为空的。查看cvNameWindow代码,原来cvNameWindow创建窗口的时候会创建两个窗口,一个主窗口,一个子窗口。

代码如下:

CV_IMPL int cvNamedWindow( const char* name, int flags )
{

...... ......


    HWND hWnd, mainhWnd;
    CvWindow* window;
    DWORD defStyle = WS_VISIBLE | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU;

...... ......

 

    mainhWnd = CreateWindow( "Main HighGUI class", name, defStyle | WS_OVERLAPPED,
                             rect.x, rect.y, rect.width, rect.height, 0, 0, hg_hinstance, 0 );
    if( !mainhWnd )
        CV_ERROR( CV_StsError, "Frame window can not be created" );

    ShowWindow(mainhWnd, SW_SHOW);

 //YV- remove one border by changing the style
    hWnd = CreateWindow("HighGUI class", "", (defStyle & ~WS_SIZEBOX) | WS_CHILD, CW_USEDEFAULT, 0, rect.width, rect.height, mainhWnd, 0, hg_hinstance, 0);
    if( !hWnd )
        CV_ERROR( CV_StsError, "Frame window can not be created" );

    ShowWindow(hWnd, SW_SHOW);

 

...... ......
}

 

恍然大悟,于是将代码改成如下,F5运行,ok。搞定。

 HWND hWnd = (HWND)cvGetWindowHandle("raw");
 HWND hRawWnd = ::GetParent(hWnd);
 if (hRawWnd != NULL) {
  BOOL bRet = ::SetWindowPos(hRawWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE |SWP_NOMOVE);
  assert(bRet);
 }

 

看来以后要多跟跟源代码,这样可以减少一些不必要的功夫。

OpenCV窗口显示在Qt的控件上 使用OpenCV打开一张图片是一件很简单的事情,并且显示出来也非常的轻松,简单到只需两行代码,这是因为OpenCV本身提供了一个Highgui模块,用来做图片的交互显示。 #include<opencv2/opencv.hpp> int main(){ cv::Mat src = cv::imread("lena.jpg"); std::string winName = "lena"; cv::namedWindow(winName, cv::WINDOW_AUTO 阅读详情

相关推荐

OpenCV快速入门:窗口交互

OpenCV是一种强大的计算机视觉库,广泛用于图像处理和计算机视觉应用。通过这篇文章,我们快速入门了OpenCV的窗口交互功能。从鼠标和键盘操作到窗口控件的添加,我们探索了多种交互方式,并通过实例演示了如何实现调整图像亮度和颜色、鼠标跟随绘制绿色框、自由调节窗口图像尺寸以及中文显示。

吾家有猫名探花的博客 3590

关于找不到cvGetWindowHandle()的解决方法

找了半天没找到,最后在国外一个论坛上找到了解决方法:添加上 #include<opencv2/highgui/highgui_c.h>

Jesus_z的博客 6030

【66】OpenCV C++ C#实战——cvGetWindowHandle未定义,OpenCV 4 使用cvGetWindowHandle报错未定义,OpenCV3才有该函数,OpenCV4以后没有

本文解决在OpenCV4中获取图像窗口句柄并嵌入C# WinForm的问题。通过包含highgui_c.h头文件调用cvGetWindowHandle()函数获取窗口句柄,利用Windows API将OpenCV图像渲染到指定窗口。C++导出函数返回窗口句柄,C#通过DllImport调用该函数,使用SetParent将OpenCV窗口嵌入Panel控件。关键步骤包括:1) OpenCV4调用隐藏API获取句柄;2) C++实现图像渲染和句柄导出;3) C#通过Win32 API实现窗口嵌入。该方法实

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 130

找不到cvGetWindowHandle的解决办法

需额外添加 #include <opencv2/highgui/highgui_c.h> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui_c.h> using namespace cv; // 包含cv命名空间 using namespace std; #define FileName "IMAGE_VIEW" HWND hWnd = (HWND)cvGetWindowHandle(File

qq_20189555的博客 2961

OpenCv3.4.5+VS2010开发实例 打开图像窗口显示在MFC控件上

OpenCv3.4.5+VS2010配置开发实例,打开图像窗口并显示在MFC的Picture Control控件上,处理图像并显示结果

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

Qt下OpenCv中cvGetWindowHandle的使用

qt cvGetWindowHandle的使用

撬动未来的支点的专栏 3428

2025.03.14【读书笔记】|GWAS分析神器:BOLT-LMM工具介绍与快速安装

在生物信息学领域,全基因组关联分析(GWAS)已成为揭示遗传与疾病关系的强有力工具。BOLT-LMM作为一款专为大规模样本量设计的GWAS分析工具,将极大地提高研究人员的工作效率。大家好,今天我们来聊聊一个非常强大的生物信息学工具——BOLT-LMM。它是基于线性混合模型(LMM)的全基因组关联分析(GWAS)分析工具,通过快速的方差近似方法在计算效率上实现了显著的提升。BOLT-LMM的高效性能使其成为大规模样本GWAS分析的理想选择,它将进一步推动生物信息学和遗传学研究的发展。

1093

OpenCV窗口置顶的方法

cvNameWindow代码,原来cvNameWindow创建窗口的时候会创建两个窗口,一个主窗口,一个子窗口。所以代码如下: cvNamedWindow("src"); HWND hWnd = (HWND)cvGetWindowHandle("src"); HWND hRawWnd = ::GetParent(hWnd); if(NULL != hRawWnd) { ...

weixin_34319999的博客 1602

Python实战:用BM3D算法给老照片去噪(附完整代码+数据集)

本文详细介绍了如何使用Python和BM3D算法为老照片进行高效去噪。通过完整的代码实现和数据集,读者可以快速掌握图像去噪技术,包括环境配置、算法原理、参数调优及效果评估,帮助恢复珍贵老照片的清晰度。

weixin_29057237的博客 235

matlab kwave模拟超声换能器学习笔记

kwave模拟超声换能器的学习笔记,从零开始造车轮

SolvingMaster的博客 3196

CV2窗口置顶

CV2窗口置顶显示解决办法 opencv窗口imshow有时候会被其他已置顶窗口遮挡,用win32gui可实现置顶 WindowName="Result" cv2.imshow(WindowName, res) hwnd = win32gui.FindWindow(None, WindowName)# 获取句柄,然后置顶 CVRECT=cv2.getWindowImageRect(WindowName) win32gui.SetWindowPos(hwnd, wi

cgplayer的博客 3167

开源ISP介绍(1)——开源ISP的Vivado框架搭建

ZYNQ视频图像处理系统,ISP图像处理硬件实现

路漫漫其修远兮,吾将上下而求索 3282

opencv imshow窗口置顶

在没有按键的情况下,手动关闭imshow出来的窗口

weixin_44650358的博客 2386

TouchGFX使用教程(三)

TouchGFX使用教程(三)界面事件控件修改方法图片等资源放置位置 界面事件 控件修改方法 图片等资源放置位置

yuanzhan11的专栏 6971

C#实现跨域访问共享文件夹的账号密码验证方案

本文详细介绍了在C#中实现跨域访问共享文件夹的账号密码验证方案。通过调用Windows API LogonUser函数,结合LOGON32_LOGON_NEW_CREDENTIALS登录类型,可安全模拟指定用户身份,有效解决工作组与域环境间的文件共享访问难题。文章提供了完整的工具类封装、多种实战场景示例及详细的错误排查指南。

pea55的博客 537

opencv改变imshow窗口大小,窗口位置的方法

2 3 4 cv2.namedWindow("enhanced",0); cv2.resizeWindow("enhanced", 640, 480); cv2.imshow("enhanced",lines) cv2.waitKey(0) 创建窗口时候改变下参数就可以鼠标随意拖动窗口改变大小啦 1 ...

rong11417的博客 7万+

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1273

opencv 调整窗口大小_opencv改变imshow窗口大小,窗口位置的方法

opencv改变imshow窗口大小,窗口位置的方法如下所示:cv2.HoughLinesPcv2.namedWindow("enhanced",0);cv2.resizeWindow("enhanced", 640, 480);cv2.imshow("enhanced",lines)cv2.waitKey(0)创建窗口时候改变下参数就可以鼠标随意拖动窗口改变大小啦cv::namedWindow(...

weixin_39645041的博客 7594

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

opencv imshow窗口大小,窗口位置,ROI

opencv imshow窗口大小,窗口位置,ROI

jacke121的专栏 14万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

用openCV在MFC窗口显示图像的方法总结

openCV是一个专业的开源图像处理和显示库,用起来非常方便,但界面设计功能一般。OpenCV与MFC结合进行图像显示是一个不错的选择。 OpenCV与MFC结合绘图的方法主要有: 1)将OpenCV窗口附着到MFC窗口 基本方法是,独立创建openCV显示窗口,并在MFC的窗口界面上设置一个与之对应的绘图控件,设置该控件为opwnCV显示窗口的父窗口,并使它们的位置、大小相同。代码如下: ...

lixuejun2008的博客 2649

Opencv调整运行窗口图片的大小

Opencv在运算时显示图片问题 总结在opencv中,图片显示的问题。简要解决图片窗口和图片大小的问题。 namedWindow("窗口名",1);//创建窗口 imshow("窗口名",要显示的图片);//在创建的窗口中显示图片 官网中内容,默认情况下,是1,自动调整窗口大小模式。如果在图片高清情况下,显示图片窗口很大,电脑屏幕放不下,并且窗口还不能通过

cumtml的博客 6万+

python使用opencv或matplotlib把多张图片显示在一个窗口内的方法

python使用opencv或matplotlib把多张图片显示在一个窗口内的方法 比如你某个文件夹下有多张图片,你不想imshow一张一张的显示,你想放在一个窗口中显示。 或者是把多张图片放在一个窗体内对比展示,而不是同时打开多个窗体。 如果用单纯的用cv2.imshow打开多个窗体来显示多张图片是这样: cv2.namedWindow("original_img", cv2.WINDO...

空空说技术的博客 5万+

MFC OpenCV:刷新图片以及防止窗口抖动的方法

背景   前置文章:MFC鼠标滚轮缩放OpenCV图片   使用滚轮缩小图片,使其小于MFC的PictrueContral控件大小时,发现缩小前的图片依旧存在,缩小后的图片重叠在其上。具体错误图片如下所示:   故缩放前先刷新图片。 刷新方法 一、先使PictrueContral控件不可见,后使其重新可见。 实现方法   在显示图片之前添加如下代码刷新MFC的PictrueContral控件,其...

北冥有鱼wyh的博客 2951
上一篇: 【转载】opencv中的一些宏
下一篇: c++模拟鼠标事件
sing_sing
博客等级 码龄20年 209粉丝 66原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值