在中,我们如何从摄像机中过滤图像。我搜索了很多,但没有找到合适的解决方案。以下是我的密码。
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
发布于 2020-12-24 11:59:02
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横向= false,bool垂直= true)
返回镜像的镜像,镜像在水平和/或垂直方向上镜像,这取决于水平和垂直方向设置为true还是false。
更新:
我找到了相机,测试了代码,意识到我忘记了一件重要的事情。您需要使用一个定时器,通过这个定时器QCameraImageCapture将捕获图像。
创建QTimer并连接到QTimer::timeout()信号:
connect (&timer, &QTimer::timeout, [&](){
camera->searchAndLock();
imageCapture->capture();
camera->unlock();
});然后启动计时器。要显示翻转的图像,只需使用QLabel类和label->setPixmap(QPixmap::fromImage(flipped))方法。
发布于 2020-12-25 07:24:35
我根据@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应在类解密中声明。
https://stackoverflow.com/questions/65437607
复制相似问题