现在的全景相机,厂商会写入一些全景图片的拍摄参数,一般会遵从google出的标准。比如理光相机,重要的信息都存在了Exif和Photo Sphere XMP里了(这些链接都是google的,请科学上网),这对后期用于进一步的图形处理来说非常重要。
这里我需要的是全景相机的陀螺仪数据PoseHeadingDegrees,PosePitchDegrees,PoseRollDegrees,这样即使用户歪着拍摄的全景照片,后期依然能正确方向显示出来,避免用户看着头晕。
这里我用了些非主流的方式来获取,简单粗暴而又不失”优雅”,直接上代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
using System; using System.IO; using System.Text; using System.Xml; public class PanoXmpReader { public int FullPanoWidthPixels; public int FullPanoHeightPixels; public float PoseHeadingDegrees; public float PosePitchDegrees; public float PoseRollDegrees; public static PanoXmpReader Read(byte[] xmpBytes) { var xmlDocument = ExtractXmp(xmpBytes); PanoXmpReader panoXmp = new PanoXmpReader(); panoXmp.FullPanoWidthPixels = GetIntValue(xmlDocument, "GPano:FullPanoWidthPixels"); panoXmp.FullPanoHeightPixels = GetIntValue(xmlDocument, "GPano:FullPanoHeightPixels"); panoXmp.PoseHeadingDegrees = GetFloatValue(xmlDocument, "GPano:PoseHeadingDegrees"); panoXmp.PosePitchDegrees = GetFloatValue(xmlDocument, "GPano:PosePitchDegrees"); panoXmp.PoseRollDegrees = GetFloatValue(xmlDocument, "GPano:PoseRollDegrees"); return panoXmp; } public static PanoXmpReader Read(string imagePath) { PanoXmpReader panoXmp = new PanoXmpReader(); FileStream stream = null; int xmpBytesLength = 1024 * 100; try { stream = File.OpenRead(imagePath); byte[] xmpBytes = new byte[xmpBytesLength]; stream.Read(xmpBytes, 0, xmpBytesLength); panoXmp = Read(xmpBytes); } catch (Exception) { // Nothing } finally { if (stream != null) { stream.Close(); } } return panoXmp; } private static int GetIntValue(XmlDocument xmlDocument, string tagName, int defaultValue = 0) { int value = defaultValue; var node = xmlDocument.GetElementsByTagName(tagName)[0]; if (node != null) { int result; if (int.TryParse(node.InnerText, out result)) { value = result; } } return value; } private static float GetFloatValue(XmlDocument xmlDocument, string tagName, float defaultValue = 0) { float value = defaultValue; var node = xmlDocument.GetElementsByTagName(tagName)[0]; if (node != null) { float result; if (float.TryParse(node.InnerText, out result)) { value = result; } } return value; } private static XmlDocument ExtractXmp(byte[] xmpBytes) { var xmpString = Encoding.UTF8.GetString(xmpBytes); var start = xmpString.IndexOf("<x:xmpmeta"); var end = xmpString.IndexOf("</x:xmpmeta>") + 12; if (start == -1 || end == -1) { return null; } var metaData = xmpString.Substring(start, end - start); var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(metaData); return xmlDocument; } } |
测试:我读取的是理光景达拍摄的5k JPEG图片,用ExtractXmp获取到的xml文件是下面这样的,用时18ms,凑活着用吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?xml version="1.0" encoding="utf-8"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" xmptk="RICOH THETA S Ver1.82"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description xmlns:GPano="http://ns.google.com/photos/1.0/panorama/" rdf:about=""> <GPano:ProjectionType>equirectangular</GPano:ProjectionType> <GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer> <GPano:CroppedAreaImageWidthPixels>5376</GPano:CroppedAreaImageWidthPixels> <GPano:CroppedAreaImageHeightPixels>2688</GPano:CroppedAreaImageHeightPixels> <GPano:FullPanoWidthPixels>5376</GPano:FullPanoWidthPixels> <GPano:FullPanoHeightPixels>2688</GPano:FullPanoHeightPixels> <GPano:CroppedAreaLeftPixels>0</GPano:CroppedAreaLeftPixels> <GPano:CroppedAreaTopPixels>0</GPano:CroppedAreaTopPixels> <GPano:PoseHeadingDegrees>67.5</GPano:PoseHeadingDegrees> <GPano:PosePitchDegrees>1.2</GPano:PosePitchDegrees> <GPano:PoseRollDegrees>-1.0</GPano:PoseRollDegrees> </rdf:Description> </rdf:RDF> </x:xmpmeta> |
Pingback: http://vioglichfu.7m.pl/index.php?n=25
Pingback: tadalafil generic
Pingback: cialis without a doctor's prescription usa
Pingback: get cialis prescription online
Pingback: example.org.17
Pingback: northwest pharmacy canada
Pingback: Buy generic viagra
Pingback: Viagra tablets
Pingback: buy cialis online
Pingback: buy viagra online no prescription
Pingback: sale levitra
Pingback: levitra uk
Pingback: Viagra alternative
Pingback: levitra prices
Pingback: generic viagra
Pingback: viagra without doctor prescription
Pingback: cheap viagra
Pingback: canadian pharmaceuticals online
Pingback: canadian pharmacies online
Pingback: drugstore online
Pingback: canada pharmacy
Pingback: international pharmacy
Pingback: buy cialis online
Pingback: cialis generic
Pingback: canadian pharmacies
Pingback: we-b-tv.com
Pingback: hs;br
Pingback: tureckie_serialy_na_russkom_jazyke
Pingback: tureckie_serialy
Pingback: 00-tv.com
Pingback: +1+
Pingback: æóêè+2+ñåðèÿ
Pingback: Ñìîòðåòü ñåðèàëû îíëàéí âñå ñåðèè ïîäðÿä
Pingback: Ñìîòðåòü âñå ñåðèè ïîäðÿä
Pingback: watch
Pingback: ++++++
Pingback: HD-720
Pingback: guardians+of+the+galaxy+2
Pingback: strong woman do bong soon
Pingback: my id is gangnam beauty
Pingback: 2020
Pingback: kpop+star+season+6+ep+9
Pingback: Video
Pingback: 1 2 3 4 5 6 7 8 9 10
Pingback: movies
Pingback: movies online
Pingback: karan johar
Pingback: Top Movies
Pingback: Movies1
Pingback: 11 10 2019
Pingback: smotretonline2015.ru
Pingback: Serial smotret
Pingback: kinokrad
Pingback: kinokrad 2020
Pingback: ñïèñîê íîâûõ ôèëüìîâ
Pingback: Watch TV Shows
Pingback: casino
Pingback: Kinokrad 2019 Kinokrad Hd
Pingback: filmy-kinokrad
Pingback: kinokrad-2019
Pingback: filmy-2019-kinokrad
Pingback: serial
Pingback: cerialest.ru
Pingback: youtube2019.ru
Pingback: dorama hdrezka
Pingback: movies hdrezka
Pingback: HDrezka
Pingback: kinosmotretonline
Pingback: LostFilm HD 720
Pingback: trustedmdstorefy.com
Pingback: bofilm ñåðèàë
Pingback: bofilm
Pingback: 1 seriya
Pingback: Êîíñóëüòàöèÿ ïñèõîëîãà
Pingback: topedstoreusa.com
Pingback: hqcialismht.com
Pingback: viagramdtrustser.com
Pingback: виагра сиалис купить
Pingback: lindamedic.com
Pingback: гдз 7 класс по английскому
Pingback: гдз по русскому 10 11
Pingback: алимов гдз
Pingback: гдз математика 6 класс виленкин
Pingback: гдз 7
Pingback: гдз 6 класс виленкин
Pingback: гдз по английскому языку биболетова
Pingback: гдз по алгебре алимова
Pingback: 4serial.com
Pingback: See-Season-1
Pingback: Evil-Season-1
Pingback: Evil-Season-2
Pingback: Evil-Season-3
Pingback: Evil-Season-4
Pingback: Dollface-Season-1
Pingback: гдз по русскому класс разумовская
Pingback: гдз по английскому языку класс
Pingback: гдз по алгебре 8
Pingback: гдз класс по русскому
Pingback: гдз по геометрии 9
Pingback: гдз 2 класс
Pingback: serial 2020
Pingback: Dailymotion
Pingback: Watch+movies+2020
Pingback: Netflix Original Movies
Pingback: serial-video-film-online
Pingback: tvrv.ru
Pingback: 1plus1serial.site
Pingback: #1plus1
Pingback: 1plus1
Pingback: Watch Movies Online
Pingback: Film
Pingback: Film 2020
Pingback: Film 2021
Pingback: watch online TV LIVE
Pingback: human design
Pingback: dizajn cheloveka
Pingback: human-design-space
Pingback: koma 2020
Pingback: hischnye-pticy-hisxne-ptic
Pingback: The-Gentlemen
Pingback: led-2
Pingback: pod-vodoi
Pingback: vk 2020
Pingback: parazity-oskar-2020
Pingback: human design human design
Pingback: DSmlka
Pingback: viagra
Pingback: viagra online
Pingback: +
Pingback: ¯jak Son³k
Pingback: astrolog
Pingback: film-kalashnikov-watch
Pingback: generic cialis
Pingback: cialis 20mg
Pingback: watch online
Pingback: cheapest generic viagra
Pingback: generic viagra india 100mg
Pingback: generic viagra cost
Pingback: kinoxaxru.ru
Pingback: pobachennya u vegas
Pingback: Proshanie so Stalinym
Pingback: strelcov 2020
Pingback: film t-34
Pingback: online pharmacy
Pingback: canadian pharmacy
Pingback: buy viagra
Pingback: cialis
Pingback: generic cialis
Pingback: sildenafil
Pingback: Beograd film 2020 Beograd
Pingback: cialis generic
Pingback: viagra
Pingback: sildenafil citrate
Pingback: psiholog online
Pingback: psyhelp_on_line
Pingback: coronavirus
Pingback: PSYCHOSOCIAL
Pingback: rasstanovka hellinger
Pingback: Cherekasi film 2020
Pingback: generic viagra
Pingback: generic ventolin
Pingback: buy ciprofloxacin
Pingback: film doktor_liza
Pingback: djoker film
Pingback: generic viagra
Pingback: buy viagra online
Pingback: best price generic viagra
Pingback: cialis without prescription
Pingback: gidonline-filmix.ru
Pingback: koronavirus-v-ukraine-doktor-komarovskiy
Pingback: generic viagra 100mg
Pingback: chloroquine phosphate
Pingback: who has tylenol on sale
Pingback: viagra online
Pingback: viagra generic
Pingback: over the counter viagra
Pingback: Canadian Online Pharmacies
Pingback: Canadian Pharcharmy Online
Pingback: t.me/psyhell
Pingback: Ïñèõîëîã îíëàéí
Pingback: bitly.com
Pingback: viagra 100mg
Pingback: viagra price
Pingback: viagra coupon
Pingback: cheap viagra
Pingback: cialis
Pingback: cialis coupon
Pingback: canadian pharmacy cialis
Pingback: cialis 5mg
Pingback: rlowcostmd.com
Pingback: bitly
Pingback: movies-tekstmovies-tekst
Pingback: Zemlyane 2005 smotret onlajn
Pingback: pharmacy
Pingback: cialis generic
Pingback: smotret onlajn besplatno v kachestve hd 1080
Pingback: gusmeasu.com
Pingback: movies-unhinged-film
Pingback: malenkie-zhenshhiny-2020
Pingback: dom 2
Pingback: zoom-psykholog
Pingback: zoom-viber-skype
Pingback: Vratar Galaktiki Film, 2020
Pingback: Vratar
Pingback: Cherkassy 2020
Pingback: chernobyl-hbo-2019-1-sezon
Pingback: moskva-psiholog
Pingback: batmanapollo.ru
Pingback: 323
Pingback: 525
Pingback: dom2-ru
Pingback: Tenet Online
Pingback: psy psy psy psy
Pingback: krsmi.ru
Pingback: like-v.ru
Pingback: CFOSPUK
Pingback: MAMprEj
Pingback: fgu0ygW
Pingback: akmeologiya
Pingback: dizain cheloveka
Pingback: human-design-hd
Pingback: batmanapollo
Pingback: tsoy
Pingback: 44548
Pingback: 44549
Pingback: hod-korolevy-2020
Pingback: HD
Pingback: 158444
Pingback: groznyy-serial-2020
Pingback: generic cialis
Pingback: 38QvPmk
Pingback: bitly.com/doctor-strange-hd
Pingback: bitly.com/eternals-online
Pingback: bitly.com/maior-grom
Pingback: matrica-film
Pingback: dzhonuikfilm4
Pingback: bitly.com/batman20212022
Pingback: bitly.com/venom-2-smotret-onlajn
Pingback: bitly.com/nevremyaumirat
Pingback: bitly.com/kingsmankingsman
Pingback: bitly.com/3zaklyatie3
Pingback: bitly.com/1dreykfilm
Pingback: bitly.com/topgunmavericktopgun
Pingback: bitly.com/flash2022
Pingback: bitly.com/fantasticheskietvari3
Pingback: bitly.com/wonderwoman1984hd
Pingback: https://customessaywriterbyz.com/
Pingback: literature review dissertation
Pingback: online help with essay writing
Pingback: admission essay editing service
Pingback: writing a thesis paper
Pingback: i need help writing a research paper
Pingback: write my thesis paper
Pingback: doctoral thesis defense
Pingback: 1444
Pingback: generic viagra
Pingback: what can i take to enhance cialis
Pingback: canadian pharmacy cialis
Pingback: cialis generic name
Pingback: viagra otc
Pingback: generic viagra online for sale
Pingback: where can i buy viagra
Pingback: viagra for men
Pingback: canada prescription drugs
Pingback: cvs pharmacy online
Pingback: cleantalkorg2.ru
Pingback: 232dfsad
Pingback: best online canadian pharmacy
Pingback: Arcoxia
Pingback: northwest pharmacy/com
Pingback: viagra
Pingback: cleantalkorg2.ru/sitemap.xml
Pingback: join vk
Pingback: vk login
Pingback: svaty7sezon
Pingback: svaty 7 sezon
Pingback: svaty 7
Pingback: viagra and cialis
Pingback: buy cialisonline