VS2017環境でC++とOpenCVを使用してカメラパラメータを取得するコードの練習

序文

この記事では、C++ と OpenCV を使用して、VS2017 環境でカメラパラメーターを表示する方法を紹介します。OpenCVライブラリを利用した関連関数を利用することで、カメラのフレームレート、幅、高さ、明るさ、コントラスト、彩度などのパラメータを取得します。


1つ、导入OpenCV库

 首先,我们需要在代码中导入OpenCV库,以便使用OpenCV的相关函数。在C++中,可以使用以下代码导入OpenCV库:

#include <opencv2/opencv.hpp>

二、创建摄像头对象

接下来,我们需要创建一个摄像头对象。在C++中,可以使用以下代码创建:

cv::VideoCapture cap(0);

这里的参数0表示使用默认的摄像头。

三つ、检查摄像头是否打开成功

创建摄像头对象后,我们需要检查摄像头是否打开成功。在C++中,可以使用以下代码检查:

if (cap.isOpened()) {
    // 获取摄像头参数
}

如果摄像头打开失败,则不会执行if语句内的代码。

四、获取摄像头参数

获取摄像头参数是本文的重点。在C++中,可以使用以下代码获取摄像头的帧率、宽度、高度、亮度、对比度和饱和度等参数:

double fps = cap.get(cv::CAP_PROP_FPS); // 帧率
int width = cap.get(cv::CAP_PROP_FRAME_WIDTH); // 视频帧宽度
int height = cap.get(cv::CAP_PROP_FRAME_HEIGHT); // 视频帧高度
double brightness = cap.get(cv::CAP_PROP_BRIGHTNESS); // 亮度
double contrast = cap.get(cv::CAP_PROP_CONTRAST); // 对比度
double saturation = cap.get(cv::CAP_PROP_SATURATION); // 饱和度

五、输出获取到的参数

获取到摄像头参数后,我们可以使用以下代码将其输出:

std::cout << "帧率: " << fps << std::endl;
std::cout << "视频帧宽度: " << width << std::endl;
std::cout << "视频帧高度: " << height << std::endl;
std::cout << "亮度: " << brightness << std::endl;
std::cout << "对比度: " << contrast << std::endl;
std::cout << "饱和度: " << saturation << std::endl;

六、释放摄像头资源

最后,我们需要释放摄像头资源。可以使用以下代码释放:

cap.release();
cv::destroyAllWindows();

至此,我们已经成功使用C++和OpenCV获取摄像头参数。希望这篇文章能够帮助到大家。

完全なコードは次のとおりです。

#include <opencv2/opencv.hpp>
int main()
{
	cv::VideoCapture cap(0);
	if (cap.isOpened()) {
		double fps = cap.get(cv::CAP_PROP_FPS); // 帧率
		int width = cap.get(cv::CAP_PROP_FRAME_WIDTH); // 视频帧宽度
		int height = cap.get(cv::CAP_PROP_FRAME_HEIGHT); // 视频帧高度
		double brightness = cap.get(cv::CAP_PROP_BRIGHTNESS); // 亮度
		double contrast = cap.get(cv::CAP_PROP_CONTRAST); // 对比度
		double saturation = cap.get(cv::CAP_PROP_SATURATION); // 饱和度

		std::cout << "帧率: " << fps << std::endl;
		std::cout << "视频帧宽度: " << width << std::endl;
		std::cout << "视频帧高度: " << height << std::endl;
		std::cout << "亮度: " << brightness << std::endl;
		std::cout << "对比度: " << contrast << std::endl;
		std::cout << "饱和度: " << saturation << std::endl;
	}

	cap.release();
	cv::destroyAllWindows();
	system("pause");
}

おすすめ

転載: blog.csdn.net/weixin_59276073/article/details/130512388