如何从 QCamera 翻转图像?
How to flip image from 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只是相机的positions。为了达到你想要的效果,你应该翻转每张图片。
创建 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
})
Documentation 表示 镜像(bool horizontal = false, bool vertical = true)
Returns a mirror of the image, mirrored in the horizontal and/or the vertical direction depending on whether horizontal and vertical are set to true or false.
更新:
我找到了摄像头并测试了代码,发现我忘记了一件重要的事情。您需要使用计时器,QCameraImageCapture 将通过该计时器捕获图像。
创建 QTimer 并连接到 QTimer::timeout()
信号:
connect (&timer, &QTimer::timeout, [&](){
camera->searchAndLock();
imageCapture->capture();
camera->unlock();
});
然后开始计时。要显示翻转图像,您可以使用 QLabel class 和 label->setPixmap(QPixmap::fromImage(flipped))
方法。
嗨,我根据@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 应该在 class decleration
中声明
在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只是相机的positions。为了达到你想要的效果,你应该翻转每张图片。
创建 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
})
Documentation 表示 镜像(bool horizontal = false, bool vertical = true)
Returns a mirror of the image, mirrored in the horizontal and/or the vertical direction depending on whether horizontal and vertical are set to true or false.
更新:
我找到了摄像头并测试了代码,发现我忘记了一件重要的事情。您需要使用计时器,QCameraImageCapture 将通过该计时器捕获图像。
创建 QTimer 并连接到 QTimer::timeout()
信号:
connect (&timer, &QTimer::timeout, [&](){
camera->searchAndLock();
imageCapture->capture();
camera->unlock();
});
然后开始计时。要显示翻转图像,您可以使用 QLabel class 和 label->setPixmap(QPixmap::fromImage(flipped))
方法。
嗨,我根据@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 应该在 class decleration
中声明