OpenCV puttext不调库显示中文

在使用OpenCV的puttext函数显示中文时遇到乱码问题,本文提供了一种无需额外调库的解决方法,通过自定义头文件和简单代码实现清晰显示中文。
摘要由CSDN通过智能技术生成

opencv的puttext函数显示中文时会乱码,网上搜了很多方法都要调库啥的来解决,感觉有些麻烦,而且文字也有一些锯齿等,效果不是很好。
自己写了个头文件来解决这个问题,代码非常简洁,如下:
putText.h:

#ifndef PUTTEXT_H_
#define PUTTEXT_H_
 
#include <windows.h>
#include <string>
#include <opencv2/opencv.hpp>
 
using namespace cv;
 
void GetStringSize(HDC hDC, const char* str, int* w, int* h);
void putTextZH(Mat &dst, const char* str, Point org, Scalar color, int fontSize,
    const char *fn = "Arial", bool italic = false, bool underline = false);
 
#endif // PUTTEXT_H_

putText.cpp:

#include "putText.h"
 
void GetStringSize(HDC hDC, const char* str, int* w, int* h)
{
   
    SIZE size;
    GetTextExtentPoint32A(hDC, str, strlen(str), &size);
    if (w != 0) *w = size.cx;
    if (h != 0) *h = size.cy;
}
 
void putTextZH(Mat &dst, const char* str, Point org, Scalar color, int fontSize, const char* fn, bool italic, bool underline)
{
   
    CV_Assert(dst.data != 0 && (dst.channels() == 1 || dst.channels() == 3));
 
    int x, y, r, b;
    if (org.x > dst.cols || org.y > dst.rows) 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值