回答
我想這不是planar YUV,如果它已經很容易了(跳過第一步和最後一步)。你打算有YUV 4:2:0平面,但是我不明白你爲什麼有困難。
- 將其轉換爲平面首先:爲平面分配空間並根據您的packed YUV格式將字節分配到正確的位置。
- 分別旋轉
Y
,U
,V
平面。每個塊的「顏色」(U
,V
)信息應保持不變。 - 重組的飛機reobtain你必須在一開始
這一直工作正常,如果你的圖像尺寸是多重的4.如果沒有,那麼照顧的權利packed YUV ...
所以,如果w * h(假設它是4)是圖像的分辨率,我可以將數組中的第一個w * h元素作爲Y平面,將下一個w * h/2作爲U並將其餘部分作爲V?爲了實現90度的旋轉,我可以將這些值分別轉置。這將使算法非常簡單! – aniait 2010-06-30 11:38:38
這是正確的,但採用4:2:0子採樣U平面大小爲w * h/4而不是w * h/2。如果格式不匹配,答案中的鏈接應該爲您提供更多細節,這些YUV格式中有很多! – jdehaan 2010-06-30 12:06:53
@jdehaan:如何指定YUV數據的地址。單個飛機的起始和結束指針? – 2011-12-29 07:13:05
謝謝,會嘗試相同的。 – aniait 2010-06-30 11:35:52
萬一圖像是YUV420平面的,這是在圖像數據的編碼方式。 平面的意思是y部分是第一個,然後是U部分,然後是V部分。
考慮圖像w的寬度和圖像h的高度。
圖像的總大小是W * H * 3/2
在Y部分也被稱爲發光佔據W * H。
Y節中每個2x2塊都有一個U像素和V像素。
接下來的U部分佔據(w/2)*(h/2)並放置在從圖像開始的偏移w * h處。 (w * h)+((w * h)/ 4)的偏移量,並且佔據(w/2)*(h/2)並且位於(w * h)+((w * h)/ 4)的偏移處。
爲了通過旋轉90度的圖像,則基本上這個W * H陣列複製到h *的陣列瓦特
如上訊息中提到,你只需要複製的每個的3以上Y,U,V分別封鎖。
從Y部分開始。要複製的第一個像素位於源陣列中的(h-1)* w處,將其複製到目標陣列的(0,0)。第二個像素在(h-2)* w等等...
記住,U和V的部分僅是(W/2)*(H/2)
接着複製U段。要複製的第一個像素在源陣列中的(w * h)+(((h/2)-1)*(w/2)),將其複製到(h * w)+(0,0)in目標陣列。 (w * h)+(((h/2)-2)*(w/2))等等...
最後複製V部分。要複製的第一個像素在源陣列中的((w * h)+(w * h/4))+(((h/2)-1)*(w/2)),將其複製到(h * w)+(w * h/4)+(0,0)。第二個像素在((w * h)+(w * h/4))+(((h/2)-2)*(w/2)),等等...
以這種方式獲得的目標數組包含90度旋轉的圖像。
- 1. 如何旋轉excel數據
- 2. 旋轉數據網格,如何旋轉方向/箭頭鍵
- 3. 如何在Pandas中旋轉數據框?
- 4. 如何旋轉大熊貓數據幀
- 5. 如何旋轉R中的數據幀
- 6. 如何旋轉numpy數組?
- 7. 如何旋轉?
- 8. 使用ffmpeg根據旋轉元數據旋轉視頻?
- 9. 轉換YUV420在android系統camera2
- 10. camera2 api將yuv420轉換爲rgb綠色
- 11. 將YUV轉換爲YUV420 Android onPreview
- 12. YUV420到RGB色彩轉換錯誤
- 13. 旋轉和彙總數據
- 14. 旋轉gnuplot中的數據
- 15. 旋轉數據幀180度
- 16. 旋轉iphone視頻數據
- 17. 在MySQL中旋轉數據。
- 18. Matplotlib imshow:數據已旋轉?
- 19. 如何旋轉相機 - 相機旋轉
- 20. Javascript旋轉 - 如何逆時針旋轉?
- 21. 我如何將文本旋轉中心與旋轉數
- 22. 如何根據角度旋轉對象?
- 23. 如何旋轉viewForHeaderInSection
- 24. 如何旋轉JXImagePanel?
- 25. 如何旋轉div
- 26. 如何旋轉TextView?
- 27. 如何旋轉CGImageRef?
- 28. 如何旋轉UIView?
- 29. 如何旋轉JPanel?
- 30. 如何旋轉UIImageView?
你是否能夠解決這個問題,我一直面臨類似的問題,http://stackoverflow.com/questions/10735784/android-honeycomb-camera-orientation – Amitg2k12 2012-05-24 13:58:09