一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
08 2021 档案
Qt 异常处理 QT_TRY和QT_CATCH
摘要:1、看看Qt源码中如何定义QT_TRY和QT_CATCH的: 1 inline void qt_noop(void) {} 2 3 /* These wrap try/catch so we can switch off exceptions later. 4 Beware - do not use 阅读全文
posted @ 2021-08-30 12:10 一杯清酒邀明月 阅读(9939) 评论(0) 推荐(0) 编辑
OpenCV 实现图片HDR功能
摘要:简介 本篇主要是利用三张图片:过曝(相机设置exposure+1)、正常(相机设置exposure+0)、欠曝(相机设置exposure-1),来合成一张在亮出和暗处细节都清晰 的图片,来简易实现图片的HDR功能。 具体实现 实现代码 1 #include <opencv2/core/core.hp 阅读全文
posted @ 2021-08-26 14:27 一杯清酒邀明月 阅读(732) 评论(0) 推荐(0) 编辑
OpenCV HDR合成
摘要:1 #include "stdafx.h"> 2 3 4 /* For description look into the help() function. */ 5 6 7 #include "opencv2/photo.hpp" 8 #include "opencv2/imgcodecs.hpp 阅读全文
posted @ 2021-08-26 14:24 一杯清酒邀明月 阅读(387) 评论(0) 推荐(0) 编辑
OpenCV .直方图均衡 CLAHE算法学习
摘要:前言 图像识别工程开发中需要增强图像对比度,便于后续处理,接触到了CLAHE(Contrast Limited Adaptive Histogram Equalization),记录一下其中的学习过程。 1.直方图均衡1.1灰度直方图 灰度图中像素值的分布为0-255,以灰度值为横坐标,纵坐标为该灰 阅读全文
posted @ 2021-08-25 11:21 一杯清酒邀明月 阅读(7484) 评论(0) 推荐(0) 编辑
OpenCV 直方图均衡化原理
摘要:直方图均衡化的作用是图像增强。 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。 第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒 阅读全文
posted @ 2021-08-25 10:48 一杯清酒邀明月 阅读(568) 评论(0) 推荐(0) 编辑
OpenCV 直方图绘制以及直方图均衡化
摘要:OpenCV–直方图绘制以及直方图均衡化 一、直方图均衡化 函数: hist = cv.calcHist( images, channels, mask, histSize, ranges[, hist[, accumulate]] ) images: 原图像图像格式为 uint8 或 float32 阅读全文
posted @ 2021-08-25 10:40 一杯清酒邀明月 阅读(474) 评论(0) 推荐(0) 编辑
OpenCV 图像锐化处理、提高图像对比度
摘要:获取图像像素指针CV_Assert(myImage.depth() == CV_8U); Mat.ptr(int i=0)获取像素矩阵指针,索引i表示第i行,从0开始计数; 获得当前指针const uchar* current = myImage.ptr(row); 获取当前像素点P(row, co 阅读全文
posted @ 2021-08-25 08:50 一杯清酒邀明月 阅读(1860) 评论(0) 推荐(0) 编辑
Halcon 自动对焦算法
摘要:1、介绍图像清晰度是衡量图像质量的一个重要指标,对于相机来说,其一般工作在无参考图像的模式下,所以在拍照时需要进行对焦的控制。对焦不准确,图像就会变得比较模糊不清晰。相机对焦时通过一些清晰度评判指标,控制镜头与CCD的距离,使图像成像清晰。一般对焦时有一个调整的过程,图像从模糊到清晰,再到模糊,确定 阅读全文
posted @ 2021-08-20 13:30 一杯清酒邀明月 阅读(2459) 评论(0) 推荐(1) 编辑
机器视觉 自动对焦算法梳理
摘要: 阅读全文
posted @ 2021-08-20 13:28 一杯清酒邀明月 阅读(372) 评论(0) 推荐(0) 编辑
Qt pro中使用DEFINES来实现条件编译
摘要:1、pro中使用DEFINES来实现条件编译 在Qt的pro文件中使用DEFINES 来实现类似gcc -D的条件编译功能。如,在pro中: 1 #定义条件编译宏LAOER 2 DEFINES += LAOER 3 #依赖编译宏LAOER的编译选项: 4 contains(DEFINES, LAOE 阅读全文
posted @ 2021-08-19 15:16 一杯清酒邀明月 阅读(1546) 评论(0) 推荐(0) 编辑
Qt MFC 混合编程的问题
摘要:最近本猿搞一个MFC和QT混合编程的东西,经常出现这样的错误: :/Program Files (x86)/Microsoft Visual Studio 14.0/VC/ATLMFC/INCLUDE/atlbase.(3210): Parse error at "__identifier" 查了一 阅读全文
posted @ 2021-08-19 14:19 一杯清酒邀明月 阅读(459) 评论(1) 推荐(0) 编辑
DECLARE_MESSAGE_MAP用法
摘要:DECLARE_MESSAGE_MAP( ) 说明: 你的程序中的每一个CCmdTarget的派生类都可以提供一个消息映射以处理消息。在你的类声明的末尾使用DECLARE_MESSAGE_MAP宏。然后,在实现了类成员函数的.CPP文件中加入BEGIN_MESSAGE_MAP宏,再加入每个消息处理函 阅读全文
posted @ 2021-08-18 13:08 一杯清酒邀明月 阅读(251) 评论(0) 推荐(0) 编辑
DECLARE_DYNCREATE与DECLARE_DYNAMIC区别
摘要:DECLARE_DYNAMIC 表示可以运行时识别该类 DECLARE_DYNCREATE 包含了DECLARE_DYNAMIC的功能,并且可以在运行过程中动态创建对象。如果需要动态创建类对象,需要使用这个宏定义。 DECLARE_DYNCREAT定义如下: #define DECLARE_DYNC 阅读全文
posted @ 2021-08-18 12:13 一杯清酒邀明月 阅读(220) 评论(0) 推荐(0) 编辑
Qt unsigned char* (uchar*) 转为QImage
摘要:场景:有一副图像,事先已经因为各种需要被读取到了内存中,且不可再根据路径读取,只能读取内存中的数据转为QImage 1 //即使在已经知道图像宽高和格式的情况下,第一种方法依然无法成功转换 2 3 //方法1 不行 4 QImage image((unsigned char*)imgData,192 阅读全文
posted @ 2021-08-18 12:07 一杯清酒邀明月 阅读(1247) 评论(0) 推荐(0) 编辑
C++ SafeArrayAccessData,SafeArrayUnaccessData使用
摘要:SafeArray是VB中的数组存储方式。通过SafeArray,可以在VC++和VB间相互调用。SafeArray也是Automation中的标准数组存储方式。 1. SafeArrayAccessData 函数原型: 1 HRESULT SafeArrayAccessData( 2 3 SAFE 阅读全文
posted @ 2021-08-18 10:15 一杯清酒邀明月 阅读(477) 评论(0) 推荐(0) 编辑
C++ 实现 COM → IUnknown → 接口
摘要:COM:对象组件模型 和语言无关,可以在 C++ 中用类的方式来定义。一个 COM 对象可以实现多个接口。 IUnknown:未直接口 一个特殊的接口,所有COM接口都继承IUnKnown这个接口。 1 interface IUnknown{ 2 HRESULT QueryInterface( // 阅读全文
posted @ 2021-08-16 15:54 一杯清酒邀明月 阅读(419) 评论(0) 推荐(0) 编辑
C++ COM编程之IUnknown接口
摘要:COM组件其实是一种特殊的类,遵循一个统一的标准,使到各个软件都可以通过某种方法访问这个类的函数和方法,也就可以做到组件通用. com就是统一的标准--通过接口来调用com组件.接口是你的com组件能被外界所感知的部分,实际就是一组方法(虚函数). IUnknown是所有接口的基础,他负责两项工作: 阅读全文
posted @ 2021-08-16 13:52 一杯清酒邀明月 阅读(947) 评论(0) 推荐(0) 编辑
C++ COM三大接口:IUnknown、IClassFactory、IDispatch。
摘要:COM组件有三个最基本的接口类,分别是IUnknown、IClassFactory、IDispatch。 COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface、AddRef、Release。这三个函数是无比重要的,而且它们的 阅读全文
posted @ 2021-08-16 13:48 一杯清酒邀明月 阅读(782) 评论(0) 推荐(0) 编辑
C++ COM组件QueryInterface函数
摘要:前言 组件对外公布的是接口;一个组件可以实现多个接口,也就是说可以对外公布多个接口,之前也总结过了,你很少会100%的去完全了解一个组件的所有接口,就像你去学习编程一样,你几乎不可能去成为编程中的全才。那么,既然我们不能去完全的了解一个组件提供的所有接口,那么我们在实际开发中,如何去判断一个组件是否 阅读全文
posted @ 2021-08-16 13:26 一杯清酒邀明月 阅读(475) 评论(0) 推荐(0) 编辑
C++ COM组件的AddRef和Release()方法使用
摘要:AddRef和Release实现的是一种名为引用计数的内存管理技术,这种技术是使组件能够自己将自己删除的最简单同时也是效率最高的方法。COM组件将维护一个称作是引用计数的数值。当客户虫组件取得一个接口时,此数值增1,当客户使用完某个接口后,此数值将减1。当此数值为0时,组件即可将自己从内存中删除。 阅读全文
posted @ 2021-08-16 13:24 一杯清酒邀明月 阅读(659) 评论(0) 推荐(0) 编辑
C++ COM编程-IConnectionPoint和IConnectionPointContainer接口介绍
摘要:0. 基本介绍头文件:ocidl.hIConnectionPointContainer和IConnectionPoint接口都继承自IUnknown接口。 可连接对象支持以下功能: 传出接口,如事件集枚举传出接口的IID的能力连接和断开接收器与这些传出IID的对象的连接的能力枚举存在于特定传出接口的 阅读全文
posted @ 2021-08-16 10:04 一杯清酒邀明月 阅读(494) 评论(0) 推荐(0) 编辑
C++ COM编程-IDispatch介绍
摘要:1. 基本详情IDispatch是由OLE自动化协议暴露出来的接口。IDispatch可以由IUnknown得到,并且在IUnknown本身所含有三个方法(AddRef,Release和QueryInterface)上增加另外四个方法(GetTypeInfoCount,GetTypeInfo,Get 阅读全文
posted @ 2021-08-16 10:01 一杯清酒邀明月 阅读(2686) 评论(0) 推荐(0) 编辑
C++ COM编程-COM编程入门实践
摘要:1. COM编程基础COM是一种规范,而不是实现。 当使用C++来实现时,COM组件就是一个C++类,而COM接口就是继承至IUnknown的纯虚类,COM组件就是实现相应COM接口的C++类。 COM规范规定,任何组件或接口都必须从IUnknown接口中继承而来。IUnknown定义了3个重要函数 阅读全文
posted @ 2021-08-16 09:59 一杯清酒邀明月 阅读(3579) 评论(0) 推荐(1) 编辑
C++ COM编程-什么是接口
摘要:1. 什么是接口说到COM,就不得不说接口了;在进行COM开发的过程中,可以说,一直都在和各种各样的接口打交道。那接口是什么?对于COM来说,接口是一个包含一个函数指针数组的内存结构,每一个数组元素包含的是一个由组件所实现的函数的地址;所以,对于COM,接口就是这样的一个内存结构,其它东西都是一些C 阅读全文
posted @ 2021-08-16 09:50 一杯清酒邀明月 阅读(1055) 评论(0) 推荐(0) 编辑
C++ COM编程-什么是组件
摘要:1. 什么是组件一个组件同一个微型应用程序类似,即都是已经编译、链接好并可以使用的了,应用程序就是由多个这样的组件打包而得到的。各定制的组件可以在运行时同其他组件连接起来以构成某个应用程序。在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。 2. COM组件 阅读全文
posted @ 2021-08-16 09:44 一杯清酒邀明月 阅读(572) 评论(0) 推荐(0) 编辑
C++ STDMETHOD介绍
摘要:STDMETHOD_是一个宏,用于定义指定返回类型的接口方法,包含virtual关键字。可用于定义方法声明。 #define STDMETHOD_(type,menthod) virtual type STDMETHODCALLTYPE menthod 例如: STDMETHOD_ (ULONG, 阅读全文
posted @ 2021-08-16 09:40 一杯清酒邀明月 阅读(573) 评论(0) 推荐(0) 编辑
C++如何响应COM事件处理
摘要:要在C++中处理COM的事件,首先查询IConnectionPointContainer接口。然后调用接口上的FindConnectionPoint查找你需要的事件接口。然后使用IConnectionPoint::Advise将事件函数绑定到你自己的事件接口上去。如果不在使用。通过调用UnAdvic 阅读全文
posted @ 2021-08-16 09:39 一杯清酒邀明月 阅读(238) 评论(0) 推荐(0) 编辑
C++ COM连接点事件event
摘要:COM 中的典型方案是让客户端对象实例化服务器对象,然后调用这些对象。然而,没有一种特殊机制的话,这些服务器对象将很难转向并回调到客户端对象。COM 连接点便提供了这种特殊机制,实现了服务器和客户端之间的双向通信。使用连接点,服务器能够在服务器上发生某些事件时调用客户端。 有了连接点,服务器可通过定 阅读全文
posted @ 2021-08-13 15:59 一杯清酒邀明月 阅读(1191) 评论(0) 推荐(0) 编辑
C++ 实时接收com组件抛出的事件
摘要:一、找到事件对用的DISPID 二、添加委托类 1 #pragma once 2 #include "oaidl.h" 3 #include <WinUser.h > 4 #include "testEventCtrl.h" 5 #define WM_NEWUSER 4 6 #define WM_C 阅读全文
posted @ 2021-08-13 15:56 一杯清酒邀明月 阅读(295) 评论(0) 推荐(0) 编辑
Qt Zebra扫码枪的命令发送和接收com组件的事件
摘要:如题,zebra官网给出的扫码枪SDK示例是基于MFC的,自己用的是QT,加大了开发难度(悔不当初用MFC),同时也对com组件不熟悉,导致折腾了好几天才搞定。也不知道这么做能不能满足QT跨平台的初衷,Windows是能用的,给大家参考一下。 1、下面是代码,命令发送这部分很容易解决,稍微改下就行, 阅读全文
posted @ 2021-08-13 15:54 一杯清酒邀明月 阅读(767) 评论(0) 推荐(0) 编辑
C++ BSTR到STD:String(std:wstring),反之亦然
摘要:1 std::string ConvertBSTRToMBS(BSTR bstr) 2 { 3 int wslen = ::SysStringLen(bstr); 4 return ConvertWCSToMBS((wchar_t*)bstr, wslen); 5 } 6 7 std::string 阅读全文
posted @ 2021-08-13 11:38 一杯清酒邀明月 阅读(435) 评论(0) 推荐(0) 编辑
C++ std::wstring 互转 std::string
摘要:1、std::wstring 转 std::string 1 string WstringToString(const std::wstring wstr) 2 { 3 #if 1 4 std::string result; 5 int len = WideCharToMultiByte(CP_AC 阅读全文
posted @ 2021-08-13 11:34 一杯清酒邀明月 阅读(638) 评论(0) 推荐(0) 编辑
Qt QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转化
摘要:1 //QString to wchar_t *: 2 const wchar_t * encodedName = reinterpret_cast<const wchar_t *>(fileName.utf16()); 3 4 //QString to char * given a file na 阅读全文
posted @ 2021-08-13 11:33 一杯清酒邀明月 阅读(589) 评论(0) 推荐(0) 编辑
Qt 解决:fatal error C1189: #error : include 'stdafx.h' before including this file for PCH
摘要:现遇到此错误提示,预与大家分享解决方法。解决此问题的方法是:确保 "stdafx.h" 是你的每个实现文件中包含的第一个头文件。 阅读全文
posted @ 2021-08-11 11:23 一杯清酒邀明月 阅读(750) 评论(0) 推荐(0) 编辑
Qt error: C2440: “默认参数”: 无法从“const wchar_t [1]”转换为“BSTR”
摘要:在qmake添加win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStringswin32: QMAKE_CFLAGS_RELEASE -= -Zc:strictStringswin32: QMAKE_CFLAGS -= -Zc:strictStringswin3 阅读全文
posted @ 2021-08-11 11:19 一杯清酒邀明月 阅读(750) 评论(0) 推荐(0) 编辑
Qt 使用包含MFC的内容包含过的库
摘要:将该库的头文件放stdafx.h最前面,并在该头文件的之前加入 #define _AFXDLL #include <afx.h> #include <xxxx.h>//库的头文件 如图: 阅读全文
posted @ 2021-08-11 11:07 一杯清酒邀明月 阅读(246) 评论(0) 推荐(0) 编辑
MFC fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha
摘要:调试程序时出现以下问题:d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(24): fatal error C1189: #error : Building MFC application with 阅读全文
posted @ 2021-08-10 15:20 一杯清酒邀明月 阅读(502) 评论(0) 推荐(0) 编辑
resource.h
摘要:resource.h就是.rc文件的头文件.rc文件里的常量全在resource.h定义 .rc文件和resource.h 都是给project add resource 的时候VS 自动生成的。一般情况下不用你去写和修改vc会帮你写和改但是如果你想用以前的.rc中的资源比如你以前做的对话框你只需复 阅读全文
posted @ 2021-08-10 14:47 一杯清酒邀明月 阅读(965) 评论(0) 推荐(0) 编辑
VisualStudio error MSB6006: “rc.exe”已退出,代码为 5
摘要:我的环境:win10 x64 + VS2013 昨天在编译一个工程时,出现如下错误: 1> 所有输出均为最新。1> ResourceCompile:1> TRACKER : 错误 TRK0005: 未能找到:“rc.exe”。系统找不到指定的文件。1> 1> 1>C:\Program Files ( 阅读全文
posted @ 2021-08-10 10:47 一杯清酒邀明月 阅读(1620) 评论(0) 推荐(0) 编辑
VisualStudio 项目 .sln .vcxproj .vcproj 文件的区别和关系
摘要:问题 一个开源工程,不知道其使用的VS版本,用VS2015打开,发现有两类工程文件,.vcproj和.vcxproj *.vcproj:VS2008以及VS2008之前版本的VS工程文件 *.vcxproj:VS2010以及VS2010之后版本的VS工程文件 sln是解决方案的配置,主要是管理这个方 阅读全文
posted @ 2021-08-06 10:44 一杯清酒邀明月 阅读(1486) 评论(0) 推荐(0) 编辑
使用C#调用C++类库
摘要:环境:win10+VS2017 过程介绍: 1.使用C++编写一个动态库(DLL); 2.将DLL内函数导出; 3.使用C#进行调用; 4.方法调用; 5.在VS进行调试; 1.使用C++编写简单的DLL; 1.1创建项目(x64); 在VS2017中新建->项目->Visual C++->Wind 阅读全文
posted @ 2021-08-04 14:45 一杯清酒邀明月 阅读(2041) 评论(0) 推荐(0) 编辑
C# IntPtr类型
摘要:一:什么是IntPtr 先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。 C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小 阅读全文
posted @ 2021-08-04 14:42 一杯清酒邀明月 阅读(855) 评论(0) 推荐(0) 编辑
C# 调用C++ dll string类型返回
摘要:为了这个问题,百度了一堆不靠谱的资料,什么C#调用c++类型对应啥的,说用string ,StringBuilder,Byte[]等,试了全部不行。其实是个很简单的问题,这里做个记录吧: C++端:(定义返回数据为结构体Vector4) 1 struct Vector4 2 { 3 float A, 阅读全文
posted @ 2021-08-04 14:34 一杯清酒邀明月 阅读(513) 评论(0) 推荐(0) 编辑
C# try、catch、finally语句
摘要:try语句提供了一种捕获程序发生异常的机制。try语句有三种形式: 1、一个try块儿后跟一个或多个catch块儿 2、一个try块儿后跟一个finally块儿 3、一个try块儿后跟一个或多个catch块儿,最后再跟一个finally块儿。(最常用) 例子:声明一个Caculator类型,并定义一 阅读全文
posted @ 2021-08-04 14:33 一杯清酒邀明月 阅读(1465) 评论(0) 推荐(0) 编辑
C语言 char *、char []、const char *、string的区别与相互转换
摘要:1.VS运行程序,出现“烫烫烫烫烫烫烫烫烫…”在 Debug 模式下,VC 会把未初始化的栈内存全部填成 0xcc,当字符串看就是 烫烫烫烫……会把未初始化的堆内存全部填成 0xcd,当字符串看就是 屯屯屯屯…… 2. VS不可以char *p=“abcd”注意:编译器是把"abcd"作为“abcd 阅读全文
posted @ 2021-08-04 13:17 一杯清酒邀明月 阅读(1257) 评论(0) 推荐(0) 编辑
C# 字符串string与char数组互转!
摘要:字符串转换成Char数组 1 string str="abcdefghijklmnopqretuvwxyz"; 2 char[] chars=str.ToCharArray(); char数组转换成字符串 1 char[] chars=new char[]{'a','b','c','d'}; 2 s 阅读全文
posted @ 2021-08-04 13:15 一杯清酒邀明月 阅读(861) 评论(0) 推荐(0) 编辑
C#如何调用C++(进阶篇)
摘要:上一篇文章最后,提出的一个问题:如果一个c++库中有很多方法,需要一个个声明??这样岂不是要写很多代码??,而且没有智能提示看到提供了那些方法。 如下图: 重点:通过CLI实现c#调用c++ 看完了本文,相信你就会了,一步步操作就是了。 一、 新建一个netcore控制台应用程序; 这个是我们测试调 阅读全文
posted @ 2021-08-04 09:10 一杯清酒邀明月 阅读(3211) 评论(2) 推荐(0) 编辑
C#如何调用C++(基础篇)
摘要:闲暇之余,记一下笔记!记录一下c#如何调用C++的动态库(dll). 步骤: 一、创建一个C++类,例如: AddOperate.h 1 extern _declspec(dllexport) int Sum(int a, int b); 2 class AddOperate 3 { 4 publi 阅读全文
posted @ 2021-08-04 09:03 一杯清酒邀明月 阅读(2931) 评论(0) 推荐(1) 编辑
C# 将信息打印/输出到VS的“输出”窗口
摘要:几种输出的区别: 1、Console.WriteLine(“输出到控制台窗口,即命令提示符窗口”);2、System.Diagnostics.Debug.WriteLine(“打印信息到输出窗口,但是只能在Debug版本运行,到了release版本中,Debug类的函数都会被忽略”);3、Syste 阅读全文
posted @ 2021-08-04 09:00 一杯清酒邀明月 阅读(953) 评论(0) 推荐(0) 编辑