qt使用opencv显示视频帧之前对其进行水平翻转后截的图片是什么样子的呢
时间: 2024-03-05 10:50:03 浏览: 74
如果在使用Qt和OpenCV打开摄像头并显示视频帧之前对其进行水平翻转,那么截取的图片会是水平翻转后的效果。
例如,如果原本摄像头中的图像是这样的:
```
1 2 3
4 5 6
7 8 9
```
进行水平翻转后,会得到以下的效果:
```
3 2 1
6 5 4
9 8 7
```
如果此时截取视频帧中的一部分区域作为图片保存,保存出来的图片也会是水平翻转后的效果。因此,如果想要保存原本摄像头中的图像,需要在水平翻转之后再将图像翻转回来。
完整代码示例如下:
```
#include <opencv2/opencv.hpp>
int main()
{
cv::VideoCapture cap(0); // 打开摄像头
if (!cap.isOpened()) // 摄像头打开失败
{
std::cerr << "Failed to open camera." << std::endl;
return -1;
}
cv::namedWindow("Camera", cv::WINDOW_AUTOSIZE); // 创建窗口
while (true) // 循环读取视频帧
{
cv::Mat frame;
cap >> frame; // 读取视频帧
if (frame.empty()) break; // 读取失败,退出循环
cv::flip(frame, frame, 1); // 对视频帧进行水平翻转
// 截取视频帧中的一部分区域作为图片保存
cv::Rect roi(100, 100, 200, 200);
cv::Mat img = frame(roi);
cv::flip(img, img, 1); // 将图片翻转回来
cv::imshow("Camera", frame); // 显示视频帧
if (cv::waitKey(30) == 'q') break; // 按下q键退出循环
}
return 0;
}
```
阅读全文