std::vectorcv::Point转换为QVector<QVector<QPoint>>
时间: 2023-08-21 12:40:40 浏览: 49
将`std::vector<cv::Point>`转换为`QVector<QVector<QPoint>>`的方法如下:
```c++
#include <QVector>
#include <QPoint>
#include <vector>
#include <opencv2/core/core.hpp>
QVector<QVector<QPoint>> vectorCvPointToQVectorQPoint(const std::vector<cv::Point>& points) {
QVector<QVector<QPoint>> qVectors;
QVector<QPoint> qPoints;
for (const cv::Point& point : points) {
qPoints.append(QPoint(point.x, point.y));
}
qVectors.append(qPoints);
return qVectors;
}
```
您可以通过调用 `vectorCvPointToQVectorQPoint` 函数并传入 `std::vector<cv::Point>` 类型的数据来获得`QVector<QVector<QPoint>>`类型的数据。函数将每个`cv::Point`转换为`QPoint`并将其添加到`QVector<QPoint>`中,然后将每个`QVector<QPoint>`添加到`QVector<QVector<QPoint>>`中。
相关问题
std::vector<cv::Point>转换为QVector<QPoint>
可以以下代码将`std::vector<cv::Point>`转换为`QVector<QPoint>`:
```c++
#include <QVector>
#include <QPoint>
#include <vector>
#include <opencv2/core/core.hpp>
QVector<QPoint> vectorCvPointToQPoint(const std::vector<cv::Point>& points) {
QVector<QPoint> qPoints;
for (const cv::Point& point : points) {
qPoints.append(QPoint(point.x, point.y));
}
return qPoints;
}
```
您可以通过调用 `vectorCvPointToQPoint` 函数并传入 `std::vector<cv::Point>` 类型的数据来获得 `QVector<QPoint>` 类型的数据。
QVector<QString> 转为std::vector<std::string>
可以使用以下代码将QVector<QString>转换为std::vector<std::string>:
```
QVector<QString> qvec;
std::vector<std::string> vec;
// 填充qvec
vec.reserve(qvec.size());
std::transform(qvec.begin(), qvec.end(), std::back_inserter(vec),
[](const QString& qs) { return qs.toStdString(); });
```
此代码使用std::transform函数将每个QString转换为std::string,并使用std::back_inserter将其添加到vec中。注意,使用reserve函数预先分配vec的内存可以提高性能。