OpenCV 使用问题汇总

1. 不识别string

有时调用 OpenCV 的函数会遇到这样的报错:

文档中明明写着参数类型是String,但传给string类型即编译不过。

这是因为 OpenCV 默认支持的类型是cv::String,而我们传入的类型一般是std::string,如果不写命名空间则只差首字母大小写,较难区分。

2. 找不到OpenCV

有可能是OpenCV的版本问题,此时只需要把

find_package(OpenCV REQUIRED)

改为带版本即可,例如

find_package(OpenCV 3 REQUIRED)

3. 矩阵/图像复制无效

如果这样写,得到的结果会让你失望

cv::Mat picture = cv::Mat::zeros(rows, cols, picture1.type()); picture.colRange(0, picture1.cols) = picture1; picture.colRange(picture1.cols, cols) = picture2;

这是因为 OpenCV 中的拷贝都是浅拷贝,使用下面的深拷贝就可以解决这个问题。

cv::Mat picture = cv::Mat::zeros(rows, cols, picture1.type()); cv::Mat left_side = picture.colRange(0, picture1.cols); picture1.copyTo(left_side); cv::Mat right_side = picture.colRange(picture1.cols, cols); picture2.copyTo(right_side);