OpenCV 实现读取USB摄像头数据,并旋转90度显示

实现图像的选装的方法有很多,如果是旋转90,180,270度这种,没必要采用透视变换之类的运算,采用矩阵转置之列的就好,当然也可以采用挨个像素的搬运,那样的话,需要更长的时间调试代码,属于细节的问题,产品落地的时候才有必要关心。

#include <iostream>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

//int main()
//{
//	Mat img = imread("D:\\3.BMP");
//
//	namedWindow("raw");
//	imshow("raw",img);
//	waitKey(0);
//
//	return 0;
//}

int main()
{
	VideoCapture cap;

	cap.open(0);

	if (!cap.isOpened())
	{
		std::cerr << "Could not openc capture." << std::endl;
		return -1;
	}


	cv::Mat frame;
	int key;

	//cap.set(CV_CAP_PROP_FRAME_WIDTH, 800);
	//cap.set(CV_CAP_PROP_FRAME_HEIGHT, 600);
	cap.set(CV_CAP_PROP_FRAME_WIDTH, 1920);
	cap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);

	for (;;)
	{
		cap >> frame;
		if (frame.empty()) break;

		cv::transpose(frame, frame);
		cv::flip(frame, frame, 0);

		key  = waitKey(100);

		if (32 == key)
		{
			imwrite("D:\\img.jpg", frame);
		}

		if (27 == key)
		{
			cap.release();
			break;
		}


		resize(frame, frame, Size(960 * 1080 / 1920, 960));
		cv::imshow("raw", frame);

	}

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值