OpenCV和Qt坐标系不一致问题

" OpenCV和QT坐标系导致绘图精度下降问题。"

OpenCV和Qt常用的坐标系都是笛卡尔坐标系,但是细微处有些不同。

01


OpenCV坐标系

OpenCV是图像处理库,是以图像像素为一个坐标位置,即一个像素对应一个坐标,所以其坐标系也叫图像坐标系。如下所示。其中坐标(1,1)表示红色方块的位置。

02


Qt坐标系

Qt是用于创建图形用户界面(GUI)应用程序,是可以处理亚像素坐标的。坐标(0,0)和(1,0)之间,还有很多坐标,比如(0.5,0)。具体如下所示。

03


两种绘制多边形对比

比如多边形的点集坐标是{(0,0), (1,0), (2,1), (1,2), (0,1)},分别使用Qt和OpenCV去绘制。绿色的轮廓是OpenCV,红色的是Qt,两者相差较大。当然这是精确到像素级别了,如果绘制的轮廓很大,不放大看是感受不到差别的。

使用具体的代码绘制对比如下。

opencv代码

cpp 复制代码
const cv::Point* ppt[1] = { contour.data() };int npt[] = { int(contour.size()) };cv::fillPoly(mask, ppt, npt, 1, cv::Scalar(125,0,0));

效果如下

Qt代码。

javascript 复制代码
// 设置画笔并绘制多边形painter->setPen(pen);painter->setBrush(Qt::blue);  // 不填充painter->drawPolygon(m_points);
javascript 复制代码
// 设置画笔并绘制多边形painter->setPen(pen);painter->setBrush(Qt::NoBrush);  // 不填充painter->drawPolygon(m_points);

可以看到QT绘制的轮廓相对于OpenCV整体往左上角偏移了一点点,轮廓范围也缩小了。

相关推荐
千疑千寻~11 分钟前
【Qt图形】详细介绍Qt中的图形场景、图元、视图
qt
千疑千寻~38 分钟前
【Qt图形】Qt中的图形场景、图元、视图 的坐标的转换
qt
一见5 小时前
如何安装 dlib 和 OpenCV(不带 Python 绑定)
人工智能·python·opencv
weixin_413063217 小时前
opencv calib3d 模块 usac magsac Gamma 查表值验证
opencv·计算机视觉
saoys8 小时前
Opencv 学习笔记:边缘检测 + 霍夫变换精准查找直线
笔记·opencv·学习
格林威8 小时前
纹理表面缺陷分析:利用频域变换检测织物疵点的 6 种技术,附 OpenCV+Halcon 实战代码!
人工智能·opencv·机器学习·计算机视觉·视觉检测·工业相机·堡盟相机
PeterClerk9 小时前
OpenCV 常用函数+ 示例图
图像处理·人工智能·python·opencv·计算机视觉
格林威9 小时前
线缆外皮破损检测:保障电气安全的 7 个核心策略,附 OpenCV+Halcon 实战代码!
人工智能·opencv·安全·机器学习·计算机视觉·视觉检测·工业相机
一叶之秋141210 小时前
Qt常用控件(三)
开发语言·qt
_OP_CHEN10 小时前
【从零开始的Qt开发指南】(二十三)Qt 界面优化之绘图实战:解锁自定义界面的无限可能
开发语言·qt