使用 winsock 实现简单的 Client 和 Server
本篇文章将介绍如何使用 winsock 来实现 Client 客户端 和 Server 服务器应用程序。由于 Client 和 Server 的具体实现有所不同,所以本文将分成两部分来对 Client 和 Server 的实现进行讲解。
运行环境
Windows 10
Visual Studio Community 2017 (version 15.9.17)
Server 的实现Server 的运行步骤如下:
初始化 Winsock。(Initialize Winsock.)
创建一个socket。(Create a socket.)
绑定 socket。(Bind the socket.)
监听客户端的 socket。(Listen on the socket for a client.)
接受客户端的连接请求。(Accept a connection from a client.)
接收和发送数据。(Receive and send data.)
断开连接。(Disconnect.)
创建 Winsock 应用打开 visual studio,创建一个空应用,并命名为 my ...
OpenCV 在图像中显示中文
本机环境
Windows 10
Visual Studio Community 2017 (version 15.9.17)
OpenCV 4.1.2
freetype 2.10.1
OpenCV 环境配置OpenCV 环境的配置可以参见我的另外一篇博客:Visual Studio Opencv 环境配置 - 手动配置
freetype 环境配置首先下载 freetype 文件。下载地址:FreeType Downloads
然后将文件解压,我这里解压到 D 盘
然后找到 ~\build\windows\vs2010 路径,鼠标右键 freetype.sln,用 Visual Studio 打开。
然后鼠标右键项目名 freetype,选择 “重定向项目”。
然后点击 “确定”。
然后查看项目的属性,可以看到链接文件的输出路径
这里可以选择不同的配置(Debug & Release)和平台(Win32 & x64),然后运行项目就可以生成对应配置和平台的连接文件。
最终我们需要的是 freetype.lib 文件,为了方便我把该文件复制到了 ~\lib\X ...
Visual Studio Opencv 环境配置 - 手动配置
本机环境
Windows 10
Visual Studio Community 2017 (version 15.9.17)
OpenCV 4.1.2
OpenCV环境配置首先下载 OpenCV 最新版本,下载地址: opencv-win
然后运行下载的文件,选择提取文件的路径,并提取文件。
提取完成后添加 PATH 环境。首先新建一个环境变量
变量名: OPENCV_DIR变量值: E:\opencv4.1\opencv\build
然后在 PATH 中新建变量。并添加以下路径
%OPENCV_DIR%\x64\vc15\bin
Visual Studio 配置属性首先打开 Visual Studio 并新建一个空应用。
然后新建一个原文件 main.cpp。
然后打开属性管理器,进行配置。这里只以 Debug|x64 为例,其他的配置相似。
鼠标右键 Debug|x64,选择 “添加新项目属性表”。文件名为 OpenCVDebug。
然后鼠标右键 OpenCVDebug,选择 “属性”。
这里需要配置的地方有 3 个,分别是 “包含目录”、 “库目录” 和 ...
Visual Studio Opencv 环境配置 - 使用 Vcpkg
本篇文章将说明如何使用 Vcpkg 配置 OpenCV 环境。
关于 Vcpkg 的安装和安装库的说明可以参见我的另外一篇文章:Windows 下使用Vcpkg 配置百度AI C++开发环境(VS2017)
安装 Opencv首先查找 opencv 的相关库有哪些
./vcpkg.exe search opencv
可以看到总共有三个
opencv: 表示 4.1.1-1 版本 OpenCV。
opencv3: 表示 3.4.7-1 版本 OpenCV。
opencv4: 表示 4.1.1-2 版本 OpenCV。
这里我选择 opencv4 进行安装,安装 x64 的编译环境,执行以下命令。
./vcpkg.exe install opencv4:x64-windows
这里还会默认安装一些依赖库。
安装完成后,会说明如何在 CMake 中使用 OpenCV 库。
find_package(OpenCV CONFIG REQUIRED)# Note: 11 target(s) were omitted.target_link_libraries(main PRIVATE op ...
Windows 10 Clion 配置 Opencv 4.0.1
系统及软件环境
Windows-10-64bit
MinGW-w64-x86_64-8.1.0-release-posix-seh-rt_v6-rev0
CMake-3.13.1
opencv-4.0.1-vc14_vc15
Clion 2018.3.1
安装环境以下环境的安装参考 Windows10 环境下使用 Cmake 和 MinGW-w64 编译安装 OpenCV 4.0.1
安装 MinGW-w64
安装 Cmake
编译 OpenCV 4.0.1
配置 OpenCV 环境将下列路径添加到 path 环境中(根据自己的编译情况不同,路径可能不同,需要更改为对应的路径)
D:\opencv\mingw-build\install\x64\mingw\bin
配置 Clion在 setting 下的 Toolchain 配置好 MinGW 的路径
修改 CmakeList.txt 文件在 CmakeList.txt 中添加以下代码
set(OpenCV_DIR D:\\opencv\\mingw-build)find_package(OpenCV REQUIRED)i ...
Windows10 环境下使用 Cmake 和 MinGW-w64 编译安装 OpenCV 4.0.1
系统及软件环境
Windows-10-64bit
MinGW-w64-x86_64-8.1.0-release-posix-seh-rt_v6-rev0
CMake-3.13.1
opencv-4.0.1-vc14_vc15
安装 MinGW-w64 并配置其环境变量通过 window 安装文件来安装
下载 MinGW-w64,下载地址: MinGW-w64 - for 32 and 64 bit Windows
安装 MinGW-w64.以管理员的身份执行安装程序,根据自己环境的情况选择安装的包
然后执行下一步,如果这步出现错误就通过离线的方式来配置
离线配置 MinGW-w64. 如果使用 .exe 文件安装出现错误,可以通过离线的方式来配置 MinGW-w64. 具体步骤参考下面内容。
通过离线包进行安装
下载对应版本的离线包,下载地址:x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
提取文件到任意路径,我是直接放在 C:\ 目录下;
配置环境变量,将 X:\mingw64\bin(X 为提取目录) 添加到环境变量 ...
Vcpkg Command-line reference
Command
Description
vcpkg search [pat]
Search for packages available to install
vcpkg install <pkg>...
Install a package
vcpkg remove <pkg>...
Uninstall a package
vcpkg remove --outdated
Uninstall all out-of-date packages
vcpkg list
List installed packages
vcpkg update
Display list of packages for updating
vcpkg upgrade
Rebuild all outdated packages
vcpkg hash <file> [alg]
Hash a file by specific algorithm, default SHA512
vcpkg integrate install
Make ins ...
C++ 中的 static 关键字
原文链接:Static Keyword in C++
static 是 C++ 中的关键字,用于为元素赋予特殊的特性。静态元素在程序生存期内仅在静态存储区中分配一次存储。它们一直作用到程序生存期。静态关键字可以与以下内容一起使用,
函数中的静态变量
静态类对象
类中的静态成员变量
类中的静态方法
1. 函数中的静态变量在函数内部使用静态变量时,仅初始化一次,然后即使通过函数调用,它们也保留上次调用的结果值。
这些静态变量存储在静态存储区中,而不是栈中。
void counter(){ static int count = 0; cout << count++;}int main(0{ for(int i = 0;i < 5; i++) { counter(); }}
Output: 0 1 2 3 4
不使用静态变量的相同程序的输出。
void counter(){ int count = 0; cout << count ...
C++ 字符串分割
#include <iostream>#include <string>#include <vector>//字符串分割函数std::vector<std::string> split(std::string str, std::string pattern){ std::string::size_type pos; std::vector<std::string> result; str += pattern;//扩展字符串以方便操作 int size = str.size(); for (int i = 0; i < size; i++) { pos = str.find(pattern, i); if (pos < size) { std::string s = str.substr(i, pos - i); result.push_back(s); i = pos + pattern.size() - 1; } } return resu ...
(简单调用篇 02) 图像主体检测 - C++ 简单调用
图像主体检测能检测出图片主体的坐标位置,可使用该接口裁剪出图像主体区域,配合图像识别接口提升识别精度。广泛适用于美图类 app、辅助智能识图等业务场景中。
应用场景
智能美图:根据用户上传照片进行主体检测,实现图像裁剪或背景虚化等功能,可应用于含美图功能 app 等业务场景中
图像识别辅助:可使用图像主体检测裁剪出图像主体区域,配合图像识别接口提升识别精度
接口描述用户向服务请求检测图像中的主体位置。
请求说明
HTTP 方法: POST
请求 URL: https://aip.baidubce.com/rest/2.0/image-classify/v1/object_detect
URL参数: access_token
Header 参数: Content-Type = application/x-www-form-urlencoded
Body 参数:见下表
参数
是否必选
类型
可选值范围
说明
image
true
string
-
图像数据,base64 编码,要求 base64 编码后大小不超过 4M,最短边至少 15px,最长边最大 4096px,支 ...