Qt绘制中国地图轮廓边界


前言

最近工作的一个需求,气象云产品图背景需要加上中国边界图,需要精确到县一级,并以雷达位置为基准点(雷达站点可移动的)。
做了一个demo怕以后忘了,demo中没做那么细,就画了中国边界,标注了站点所在位置,以及可修改站点位置功能。


一、第三方插件

用到了JSON的第三方管插件,因为在网上找的GIs数据是json格式的。
用到了QCUSTOMPLOT绘图插件,项目中一直用这个插件画图。
demo中只用到了一个包含中国边界数据名为china.json数据文件,其实数据很全,demo中没用那么多,包括中国所有县、区、市、省的数据。

二、

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

demo链接(地图经纬度数据很全几乎涉及每个城区)链接

QT中结合OpenCV进行轮廓检测并根据轮廓提取图片区域,可以按照以下步骤进行: 1. 首先,确保已经安装了必要的库,包括OpenCV (`opencv2`) 和 Qt 的绑定(如 `qt_opencv` 或者直接集成到项目中)。 2. **加载图像**: ```cpp cv::Mat image = cv::imread("input_image.jpg", cv::IMREAD_COLOR); ``` 3. **预处理图像**: 可能需要调整大小、灰度化、二值化等操作,以便于后续的轮廓检测。例如,二值化操作: ```cpp cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY); cv::threshold(grayImage, binaryImage, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); ``` 4. **轮廓检测**: ```cpp std::vector<std::vector<cv::Point>> contours; cv::findContours(binaryImage, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE); ``` 5. **遍历轮廓并提取区域**: 对每个轮廓,使用`boundingRect`函数获取其边界框,然后从原始图像中裁剪出这个区域: ```cpp for (const auto& contour : contours) { cv::Rect rect = cv::boundingRect(contour); cv::Mat croppedRegion = image(rect); // 现在croppedRegion就是对应轮廓的图像部分 } ``` 6. **将结果保存或显示**: 如果你想在Qt界面上显示,可以把`cv::Mat`转换成`QImage`,然后使用`QGraphicsView`或`QLabel`显示: ```cpp QImage qi(croppedRegion.data, croppedRegion.cols, croppedRegion.rows, cv::mat::channels()*croppedRegion.cols, QImage::Format_RGB888); QLabel *label = new QLabel(this); label->setPixmap(QPixmap::fromImage(qi)); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值