C++ 使用一维数组和二维数组给 std::vector<cv::Point2d> 赋值的方法

15 篇文章 1 订阅

1. 一维数组给 vector 赋值的方法

(1)最简单的赋值方法是for循环遍历赋值,此处略过。

(2)还有一种方法可以直接将数组赋值给 vector :

int arr[4] = {1, 2, 3, 4};
vector<int> v(arr, arr + 4); 

(3)此外还可以用 STL里面提供的 generate() 方法,但没有方法(2) 方便,此处略过,具体可以参考 c++中如何将数组赋值给vector

2. 一维 Point2d 数组给 vector<cv::Point2d> 赋值

一维数组给 vectorcv::Point2d 赋值就很简单了:

#include <opencv2\opencv.hpp>
#include <vector>

int main() {
	cv::Point2d input[3] = { cv::Point2d(0,0),cv::Point2d(1,1),cv::Point2d(2,2) };
	std::vector<cv::Point2d> output(input, input + 3);
	std::cout << "End!" << std::endl;    // End!
	return 0;
}

3. 二维 double 数组给 vector<cv::Point2d> 赋值

二维数组给 vectorcv::Point2d 赋值就需要注意了,如果还是参照上面说的 一维数组给 vector 赋值的方法,那么就会报错了:

#include <opencv2\opencv.hpp>
#include <vector>

int main() {
	double input[3][2] = { {0,0},{1,1},{2,2} };
	std::vector<cv::Point2d> output(input, input + 3);
	std::cout << "End!" << std::endl;
	return 0;
}

/*
报错:
error C2664: “cv::Point_<double>::Point_(const cv::Point_<double> &)”: 
无法将参数 1 从“double [2]”转换为“const cv::Vec<double,2> &”
*/

报错:

在这里插入图片描述
并且这种报错不会指出出错的位置,非常难找到错误所在。

报错内容说 “无法将参数 1 从“double [2]”转换为“const cv::Vec<double,2> & ”,其实就是指无法将二维数组中的一维数组(double [2])转换为 cv::Point2d 类型。

所以这种情况我们就只能采用最笨的遍历赋值了,代码如下:

#include <opencv2\opencv.hpp>
#include <vector>

int main() {
	double input[3][2] = { {0,0},{1,1},{2,2} };
	std::vector<cv::Point2d> output(3);
	for (int i = 0; i != 3; i++) {
		output[i].x = input[i][0];
		output[i].y = input[i][1];
	}
	std::cout << "End!" << std::endl;   // End!
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ctrl A_ctrl C_ctrl V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值