📅  最后修改于: 2023-12-03 15:06:32             🧑  作者: Mango
OpenCV 是计算机视觉领域最为流行的开源框架之一。本文将介绍如何从 OpenCV 2 迁移到 OpenCV 3.x 版本,从而最大化地利用新的功能和修复了的错误。
OpenCV 3.x 版本引入了很多新的模块和功能。以下是一些可能最有用的模块:
以下是一些可能最有用的新功能:
在迁移到 OpenCV 3.x 后,您将能够利用这些新的模块和功能。
除了新的模块和功能外,OpenCV 3.x 相对于 OpenCV 2 做出了一些细微变化:
OpenCV 3.x 将名称空间从 cv
更改为了 cv::
。 这意味着在访问 OpenCV 中的函数和类时需要添加 cv::
前缀。
使用 OpenCV 2
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat img = imread("image.jpg", CV_LOAD_IMAGE_COLOR);
imshow("Image", img);
waitKey(0);
return 0;
}
使用 OpenCV 3.x
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
int main()
{
cv::Mat img = cv::imread("image.jpg", cv::IMREAD_COLOR);
cv::imshow("Image", img);
cv::waitKey(0);
return 0;
}
OpenCV 3.x 不再支持 CV_(例如 CV_LOAD_IMAGE_COLOR 等)前缀来指定图像的 color space。现在,您需要明确指定 color space(例如 IMREAD_COLOR)。此更改会影响标头中的一些常量。此更改是为了简化名称空间并提高可读性。
使用 OpenCV 2
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat img = imread("image.jpg", CV_LOAD_IMAGE_COLOR);
cvtColor(img, img, CV_BGR2GRAY);
imshow("Image", img);
waitKey(0);
return 0;
}
使用 OpenCV 3.x
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
int main()
{
cv::Mat img = cv::imread("image.jpg", cv::IMREAD_COLOR);
cv::cvtColor(img, img, cv::COLOR_BGR2GRAY);
cv::imshow("Image", img);
cv::waitKey(0);
return 0;
}
OpenCV 3.x 中的名称现在由小写字母和下划线组成,更加清晰明了。
使用 OpenCV 2
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat img = imread("image.jpg", CV_LOAD_IMAGE_COLOR);
GaussianBlur(img, img, Size(3, 3), 0, 0);
imshow("Image", img);
waitKey(0);
return 0;
}
使用 OpenCV 3.x
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
int main()
{
cv::Mat img = cv::imread("image.jpg", cv::IMREAD_COLOR);
cv::GaussianBlur(img, img, cv::Size(3, 3), 0, 0);
cv::imshow("Image", img);
cv::waitKey(0);
return 0;
}
OpenCV 3.x 包含许多新的模块和功能,可以提高计算机视觉应用程序的性能和精度。此外,虽然 OpenCV 3.x 的某些更改可能需要更新代码,但这些更改旨在简化代码,提高可读性。如果您已经成功实施了 OpenCV 2 应用程序,那么迁移到 OpenCV 3.x 是完全值得的一步。