CLion + OpenCV + Utf8 终极解决方案
下载安装 OpenCV到官网https://opencv.org/releases/选择对应版本下载找到安装包双击即可设置环境变量使用 CLion 新建 OpenCV 工程将Cmakelist.txt 替换成以下文本cmake_minimum_required(VERSION 4.2) project(untitled) set(CMAKE_CXX_STANDARD 20) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})解决乱码问题统一全链路UTF-8配置最推荐治本之策让编辑器、编译器、程序运行环境全部使用UTF-8彻底消除Windows带来的编码差异。修改 CLion 设置打开设置File-Settings(Ctrl Alt S)。编辑器设置进入Editor-File Encodings将Global Encoding、Project Encoding和Default encoding for properties files全部设置为UTF-8。控制台设置进入Editor-General-Console将Default encoding设置为UTF-8。加入这个函数#includeopencv2/opencv.hpp#includewindows.h#includestringstd::stringutf8ToGBK(std::string utf8String){intwlenMultiByteToWideChar(CP_UTF8,0,utf8String.c_str(),-1,nullptr,0);wchar_t*wstrnewwchar_t[wlen];MultiByteToWideChar(CP_UTF8,0,utf8String.c_str(),-1,wstr,wlen);intglenWideCharToMultiByte(CP_ACP,0,wstr,-1,nullptr,0,nullptr,nullptr);char*gstrnewchar[glen];WideCharToMultiByte(CP_ACP,0,wstr,-1,gstr,glen,nullptr,nullptr);std::stringresult(gstr);delete[]wstr;delete[]gstr;returnresult;}函数调用cv::namedWindow(utf8ToGBK(中文标题));cv::imshow(utf8ToGBK(中文标题),img);最终测试代码/** * Copyright (C) 2026 - 2026 Jasonakeke Inc. All Rights Reserved * * Desc : * Time : 2026/6/11 21:59 * Author : Code_By_Jasonakeke * Email : 2284037977qq.com * Class : AdjustBrightnessSlider * IDE : CLion */#includeopencv2/opencv.hpp#includewindows.h#includestring// 当前亮度值intbrightValue50;// 对比度intcontrastValue50;cv::Mat dstImg;std::stringutf8ToGBK(std::string utf8String){intwlenMultiByteToWideChar(CP_UTF8,0,utf8String.c_str(),-1,nullptr,0);wchar_t*wstrnewwchar_t[wlen];MultiByteToWideChar(CP_UTF8,0,utf8String.c_str(),-1,wstr,wlen);intglenWideCharToMultiByte(CP_ACP,0,wstr,-1,nullptr,0,nullptr,nullptr);char*gstrnewchar[glen];WideCharToMultiByte(CP_ACP,0,wstr,-1,gstr,glen,nullptr,nullptr);std::stringresult(gstr);delete[]wstr;delete[]gstr;returnresult;}voidadjust(intpos,void*userData){// 获取当前滑动条的值// int currentPos cv::getTrackbarPos(亮度调节, 亮度调节窗口);// int currentPos pos;cv::Mat img*static_castcv::Mat*(userData);intbrightbrightValue-50;// 映射到0.02 - 2doublecontraststatic_castdouble(contrastValue)/50;// 对比度 和亮度img.convertTo(dstImg,-1,contrast,bright);cv::imshow(utf8ToGBK(亮度对比度调节窗口),dstImg);}intmain(intargc,char*argv[]){// 滑动条// 加载图片cv::Mat imgcv::imread(../flower.jpg);if(img.empty()){std::coutCould not open or find the imagestd::endl;return-1;}// 创建滑动条要绑定的窗口cv::namedWindow(utf8ToGBK(亮度对比度调节窗口));// 创建滑动条cv::createTrackbar(utf8ToGBK(亮度调节),utf8ToGBK(亮度对比度调节窗口),nullptr,100,adjust,img);cv::createTrackbar(utf8ToGBK(对比度调节),utf8ToGBK(亮度对比度调节窗口),nullptr,100,adjust,img);cv::waitKey(0);return0;}