[Interest] QML Camera: resulting image is rotated
René Hansen
renehh at gmail.com
Mon Dec 10 09:48:33 CET 2018
You can get the Camera orientation like so:
QCamera *cam = qvariant_cast<QCamera
*>(m_filter->camera()->property("mediaObject"));
QCameraInfo(*cam).orientation()
Then in case orientation is not % 180, you can rotate the image.
/René
On Mon, 10 Dec 2018 at 09:42 ekke <ekke at ekkes-corner.org> wrote:
> Am 10.12.18 um 02:08 schrieb Alexander Ivash:
>
> Thanks!
>
> But frankly speaking this is not the answer I hoped to get :).
>
> ;-)
>
> Have you tried to extract rotation from exif / metadata? This is what I'm
> going to do if don't find better way.
>
> have not tried this. please let me know if you'll find a way
>
> In my case VideoOutput always shows preview in correct orientation,
>
> have you tested on iOS and FrontFace Camera ? in my use-cases I needed
> rotation of 180 for preview (VideoOutput)
>
> so looks like Qt *knows* how to rotate preview frames properly (why
> doesn't it use this knowledge to rotate saved image or why doesn't it
> expose it - this is another question). But if Qt knows - there should be
> some source of information where it gets such a knowledge.
>
> haven't found any info about
>
> ciao
>
> ekke
>
>
> Regards, Alexander
>
> On Dec 9 2018, at 8:17 pm, ekke <ekke at ekkes-corner.org>
> <ekke at ekkes-corner.org> wrote:
>
>
> Am 09.12.18 um 16:57 schrieb Alexander Ivash:
>
>
> Is it possible to understand the angle to un-rotate? I've tried to
> un-rotate based on orientation from VideoOtput but it doesn't work
> uniformly on all the devices.
>
> Regards, Alexander
> [image: Open Tracking]
>
> _______________________________________________
> Interest mailing listInterest at lists.qt-project.org <https://link.getmailspring.com/link/1544403647.local-a741a368-81fb-v1.5.3-420ce003@getmailspring.com/0?redirect=mailto%3AInterest%40lists.qt-project.org&recipient=ZWtrZUBla2tlcy1jb3JuZXIub3Jn>https://lists.qt-project.org/listinfo/interest <https://link.getmailspring.com/link/1544403647.local-a741a368-81fb-v1.5.3-420ce003@getmailspring.com/1?redirect=https%3A%2F%2Flists.qt-project.org%2Flistinfo%2Finterest&recipient=ZWtrZUBla2tlcy1jb3JuZXIub3Jn>
>
> Alexander,
>
> from my experiences it's not so easy.
>
> it depends from device and how the camera module is physically mounted
>
> so I'm doing it for my customers hardcoded while waiting that QML will
> handle this
>
> here's some code from customer app
>
> it's on my TODO to extract the code and create example app and blog and
> create all the specific issues - but expect 2019
>
> To get some ideas:
>
> // V I D E O O U T P U T
> VideoOutput {
> source: camera
> anchors.fill: parent
> focus : visible
> autoOrientation: true
> rotation: isIos && isFrontFace ? 180:0
> } // Video Output
>
>
> // P R E V I E W I M A G E
> Image {
> id: photoPreview
> fillMode: Image.PreserveAspectFit
> anchors.fill: parent
> property bool isPortraitAtCaptureTime: false
> // i O S BUG
> // on iOS we don't use autoTransform - otherwise orientation would be
> wrong
> // instead we're calculating rotation of Image
> // we also must calculate rotation 180 for VideoOutput if iOS and
> FrontFace
> // see also
> // https://bugreports.qt.io/browse/QTBUG-50056
> <https://link.getmailspring.com/link/1544403647.local-a741a368-81fb-v1.5.3-420ce003@getmailspring.com/2?redirect=https%3A%2F%2Fbugreports.qt.io%2Fbrowse%2FQTBUG-50056&recipient=ZWtrZUBla2tlcy1jb3JuZXIub3Jn>
> // test also front camera bugs
> https://bugreports.qt.io/browse/QTBUG-37955
> <https://link.getmailspring.com/link/1544403647.local-a741a368-81fb-v1.5.3-420ce003@getmailspring.com/3?redirect=https%3A%2F%2Fbugreports.qt.io%2Fbrowse%2FQTBUG-37955&recipient=ZWtrZUBla2tlcy1jb3JuZXIub3Jn>
> and https://bugreports.qt.io/browse/QTBUG-67985
> <https://link.getmailspring.com/link/1544403647.local-a741a368-81fb-v1.5.3-420ce003@getmailspring.com/4?redirect=https%3A%2F%2Fbugreports.qt.io%2Fbrowse%2FQTBUG-67985&recipient=ZWtrZUBla2tlcy1jb3JuZXIub3Jn>
> autoTransform: isIos? false : true
> rotation: 0
> } // photoPreview
>
> // ROTATE BEFORE CAPTURE
> // iOS rotation calculated in cpp:
> int PhotoUtil::cameraScreenRotation(const bool isBackFace, const int
> cameraOrientation)
> {
> const int screenAngle =
> mScreen->angleBetween(mScreen->nativeOrientation(), mScreen->orientation());
> int rotation;
> if (isBackFace) {
> rotation = (360 - cameraOrientation + screenAngle) % 360;
> } else {
> rotation = (cameraOrientation - screenAngle) % 360;
> }
> return rotation;
> }
> if(isIos) {
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, photoPreview.rotation)
> } else {
> // X C O V E R
> if(isSamsungXCover) {
> if(photoPreview.isPortraitAtCaptureTime) {
> if(isBackFace) {
> // PORTRAIT BACK: rotate 90°
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, 90)
> } else {
> // PORTRAIT FRONT: rotate -90°
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, -90)
> }
> } else {
> // LANDSCAPE BACK or FRONT: rotate 180°
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, 180)
> }
> }
> // P I X E L C
> else if(isPixelC) {
> if(photoPreview.isPortraitAtCaptureTime) {
> if(isBackFace) {
> // PORTRAIT BACK: rotate 90°
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, 90)
> } else {
> // PORTRAIT FRONT: rotate -90°
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, -90)
> }
> } else {
> // LANDSCAPE BACK or FRONT: OK
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, 0)
> }
> }
> // NO SPECIAL DEVICE WITH MANAGED ORIENTATION
> else {
>
> photoUtil.rotateScaleSaveCapturedImage(camera.imageCapture.capturedImagePath,
> requestId, theEntity, 0)
> }
> }
>
> have tried with some devices and also created a Settings Page where
> customer can enter rotation needed for FrontFace or BackFace camera for a
> specific model, so I can add this
>
> ekke
> _______________________________________________
> Interest mailing list
> Interest at lists.qt-project.org
> https://lists.qt-project.org/listinfo/interest
>
> [image: Open Tracking]
>
>
> _______________________________________________
> Interest mailing list
> Interest at lists.qt-project.org
> https://lists.qt-project.org/listinfo/interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181210/753f3c17/attachment.html>
More information about the Interest
mailing list