如何从QCamera翻转图像



在QT Creator中,我们如何从相机中过滤图像。我在谷歌上搜索了很多,但没有找到合适的解决方案。以下是我的代码。

mCamera = new QCamera;
mViewfinder = new QCameraViewfinder;
mLayout = new QVBoxLayout(ui->graphicsView);
mLayout->addWidget(mViewfinder);
mCamera->setViewfinder(mViewfinder);
mViewfinder->show();
mCamera->start();

我在像下面这样的QCamera中的构造函数参数中尝试了QCamera::FrontFace和QCamera::BackFace

mCamera = new QCamera(QCamera::FrontFace);

mCamera = new QCamera(QCamera::BackFace );

但两者没有区别。在Python 中

video=cv2.flip(self.frame,1)

将解决该问题,知道如何解决这个问题吗。。我正在使用Windows 10

QCamera::FrontFace

QCamera::BackFace创建QCameraImageCapture并连接到其imageCaptured((信号。

auto imageCapture = new QCameraImageCapture( mCamera );
connect(imageCapture, &QCameraImageCapture::imageCaptured, [&](int id, const QImage &preview){
QImage flipped = preview.mirrored();
// do what you want with flipped image
})

文档显示镜像(bool horizontal=false,bool vertical=true(

返回图像的镜像,在水平和/或垂直方向上镜像,具体取决于水平和垂直设置为true还是false。

更新:

我找到了相机,测试了代码,意识到我忘记了一件重要的事情。您需要使用QCameraImageCapture捕捉图像的计时器。

创建QTimer并连接到QTimer::timeout()信号:

connect (&timer, &QTimer::timeout, [&](){
camera->searchAndLock();
imageCapture->capture();
camera->unlock();
});

然后启动计时器。要显示翻转的图像,您可以使用带有label->setPixmap(QPixmap::fromImage(flipped))方法的QLabel类。

Hai我根据@Allocse的回答及其对我的工作更改了代码我的完整代码将是

mCamera = new QCamera;
mCamera->start();
imageCapture = new QCameraImageCapture( mCamera );
connect (&timer, &QTimer::timeout, [&](){
mCamera->searchAndLock();
imageCapture->capture();
mCamera->unlock();
});
connect(imageCapture, &QCameraImageCapture::imageCaptured, [&](int id, const QImage &preview){
QImage flipped = preview.mirrored(true,false);
ui->videoFrame->setPixmap(QPixmap::fromImage(flipped));
});
timer.start();

注意:-mCamera和imageCapture应该在类分离中声明

最新更新