首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从QCamera中翻转图像?

如何从QCamera中翻转图像?
EN

Stack Overflow用户
提问于 2020-12-24 11:19:17
回答 2查看 383关注 0票数 0

在中,我们如何从摄像机中过滤图像。我搜索了很多,但没有找到合适的解决方案。以下是我的密码。

代码语言:javascript
复制
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构造函数,如下所示

代码语言:javascript
复制
mCamera = new QCamera(QCamera::FrontFace);

代码语言:javascript
复制
mCamera = new QCamera(QCamera::BackFace );

但两者没有区别。在Python中

代码语言:javascript
复制
video=cv2.flip(self.frame,1)

会解决这个问题,任何知道如何解决这个..。我正在使用Windows 10

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-24 11:59:02

QCamera::FrontFaceQCamera::BackFace只是相机的位置。为了实现你想要的,你应该翻转每一个图像。

创建QCameraImageCapture并连接到其imageCaptured()信号。

代码语言:javascript
复制
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横向= false,bool垂直= true)

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

更新:

我找到了相机,测试了代码,意识到我忘记了一件重要的事情。您需要使用一个定时器,通过这个定时器QCameraImageCapture将捕获图像。

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

代码语言:javascript
复制
connect (&timer, &QTimer::timeout, [&](){
    camera->searchAndLock();
    imageCapture->capture();
    camera->unlock();
});

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

票数 3
EN

Stack Overflow用户

发布于 2020-12-25 07:24:35

我根据@Allocse的答案修改了我的代码,它为我做的工作我的完整代码是

代码语言:javascript
复制
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应在类解密中声明。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65437607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档