当前位置: 首页 > news >正文

Opencv C++写中文(来自Gemini)

基于与Google Gemini交互获取的Opencv在图片上写汉字的实现

sudo apt-get install libfreetype6-dev
sudo apt-get install fonts-wqy-zenhei

CMakeLists.txt

cmake_minimum_required(VERSION 3.10) # Or a more recent versionproject(OpenCVChineseText)set(CMAKE_CXX_STANDARD 17) # Or your preferred C++ standard
set(CMAKE_CXX_STANDARD_REQUIRED ON)# --- Find OpenCV ---
find_package(OpenCV REQUIRED)
if(OpenCV_FOUND)message(STATUS "Found OpenCV: ${OpenCV_DIR}")include_directories(${OpenCV_INCLUDE_DIRS})
else()message(FATAL_ERROR "OpenCV not found. Please set OpenCV_DIR or ensure it's in your PATH.")
endif()# --- Find FreeType ---
find_package(Freetype REQUIRED)
if(Freetype_FOUND)message(STATUS "Found FreeType: ${FREETYPE_DIR}")include_directories(${FREETYPE_INCLUDE_DIRS})
else()message(FATAL_ERROR "FreeType not found. Please ensure it's installed.")
endif()# --- Add Executable ---
add_executable(opencv_chinese_text main.cpp) # Replace main.cpp with your source file(s)# --- Link Libraries ---
target_link_libraries(opencv_chinese_text${OpenCV_LIBS}${FREETYPE_LIBRARIES}
)# --- Optional: Install target ---
install(TARGETS opencv_chinese_text DESTINATION bin)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/fonts DESTINATION share/opencv_chinese_text) # If you have a fonts folder

main.cpp

#include <iostream>
#include <string>
#include <vector>
#include <ft2build.h>
#include FT_FREETYPE_H
#include <opencv2/opencv.hpp>
#include <locale>
#include <codecvt>int main()
{cv::Mat image = cv::Mat::zeros(200, 500, CV_8UC3);std::string chineseText = "你好,世界";int fontSize = 48;int x = 50, y = 100;cv::Scalar textColor(255, 255, 255); // White color for textFT_Library library;if (FT_Init_FreeType(&library)){std::cerr << "Error initializing FreeType library" << std::endl;return -1;}FT_Face face;if (FT_New_Face(library, "/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc", 0, &face)){std::cerr << "Error loading font file" << std::endl;FT_Done_FreeType(library);return -1;}FT_Set_Pixel_Sizes(face, 0, fontSize);std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;std::wstring wide_text = converter.from_bytes(chineseText);for (wchar_t wc : wide_text){FT_UInt glyph_index = FT_Get_Char_Index(face, wc);if (FT_Load_Glyph(face, glyph_index, FT_LOAD_RENDER)){std::cerr << "Error loading glyph" << std::endl;continue;}FT_Bitmap &bitmap = face->glyph->bitmap;for (int i = 0; i < bitmap.rows; ++i){for (int j = 0; j < bitmap.width; ++j){unsigned char pixel_value = bitmap.buffer[i * bitmap.pitch + j];if (pixel_value > 0){cv::Point draw_point(x + face->glyph->bitmap_left + j, y - face->glyph->bitmap_top + i);if (draw_point.x >= 0 && draw_point.x < image.cols && draw_point.y >= 0 && draw_point.y < image.rows){image.at<cv::Vec3b>(draw_point)[0] = cv::saturate_cast<uchar>(textColor[0] * (pixel_value / 255.0));image.at<cv::Vec3b>(draw_point)[1] = cv::saturate_cast<uchar>(textColor[1] * (pixel_value / 255.0));image.at<cv::Vec3b>(draw_point)[2] = cv::saturate_cast<uchar>(textColor[2] * (pixel_value / 255.0));}}}}x += face->glyph->advance.x >> 6;}FT_Done_Face(face);FT_Done_FreeType(library);cv::putText(image, "This is English", cv::Point(50, 50), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 255, 255));cv::imshow("Image with Text", image);cv::waitKey(0);cv::destroyAllWindows();return 0;
}

http://www.dtcms.com/a/191661.html

相关文章:

  • 电脑桌面便签哪个好?2025年电脑免费用的便签软件推荐
  • Maven clean 提示文件 java.io.IOException
  • nginx负载均衡及keepalive高可用
  • [IMX] 02.GPIO 寄存器
  • [IMX] 03.时钟树 - Clock Tree
  • C#中BackgroundWorker的概念与用法详解
  • 【网工】华为配置基础篇①
  • 华为数字政府与数字城市售前高级专家认证介绍
  • 【hadoop】Flume的相关介绍
  • [Linux]从零开始的STM32MP157 Busybox根文件系统测试及打包
  • [IP地址科普] 服务器公网IP、私网IP、弹性IP是什么?区别与应用场景详解
  • java-JUC概述(进行分类总结-包含原子类、并发集合、线程等)
  • Profibus DP主站转Profinet网关接E+H流量计与西门子plc通讯
  • 【golang】DNS 资源记录(RR)接口
  • PyTorch LSTM练习案例:股票成交量趋势预测
  • uniapp微信小程序-长按按钮百度语音识别回显文字
  • R语言的专业网站top5推荐
  • 【Linux】动静态库的使用
  • 边缘计算模块
  • 专项智能练习(定义判断)_DA_02
  • idea整合maven环境配置
  • GPT-4o 遇强敌?英伟达 Eagle 2.5 视觉 AI 王者登场
  • 电池组PACK自动化生产线:多领域电池生产的“智能引擎”
  • 重磅发布!OpenAI 推出最新模型 GPT-4.1 系列!
  • 2025全网首发:ComfyUI整合GPT-Image-1完全指南 - 8步实现AI图像创作革命
  • 英迈国际Ingram Micro EDI需求分析
  • 论文研读——《AnomalyGPT:使用大型视觉语言模型检测工业异常》
  • IntelliJ IDEA 集成AI编程助手全解析:从Copilot到GPT-4o Mini的实践
  • 山东大学计算机图形学期末复习7——CG11上
  • 红黑树:数据世界的平衡守护者