2012-03-31 19 views
1

我已經實現了使用相機拍照的功能。而不是存儲它我想做一些簡單的圖片處理(非常簡單的OCR - 主要是嘗試自己的能力來處理這樣的任務),爲此我需要轉換imageData在 public void onPictureTaken(byte [] imageData,Camera c) 轉換成灰度 - 二維字節數組。 我發現的唯一代碼示例是使用bitmapFactory將圖像轉換爲位圖(Image Processing on Android)。 我的問題是 - 有人可以建議所有的原始格式,以及如何從中提取數據?或者,也許我最好的猜測是獲取位圖並將其縮小到2d字節數組?在onPictureTaken中使用原始圖像數據

關於該主題的任何鏈接非常感謝。

+0

你需要使用'onPictureTaken'或者你可以使用預覽回調,'onPreviewFrame'? – 2012-03-31 17:03:20

+0

那麼,我不需要在預覽過程中處理圖像,只有在拍攝圖像後。通過參數有什麼不同? – Vitaly 2012-03-31 17:42:13

+1

'onPictureTaken'傳遞JPG圖像,'onPreviewFrame'傳遞原始YUV數據。 – 2012-03-31 18:06:12

回答

1

我知道這個答案是有點晚了,但這裏是我已經學會在過去一個月裏,用相機工作時。

不管你經由onPictureTakenonPreviewFrame它可以在sereral不同格式(android.graphics.ImageFormat)進來的編碼接收器的原始圖像數據。唯一可以保證通用支持(根據文檔)是NV21,YV12得到了蜂窩和通用支持。除了得到普遍支持之外,NV21可能非常適合你想要做的事(轉換成黑白)。 NV21是YUV格式,其中Y通道攜帶亮度信息,而U和V通道攜帶顏色信息。看到一個更加正式的描述在這裏:

http://en.wikipedia.org/wiki/YUV
http://www.fourcc.org/fccyvrgb.php
http://www.fourcc.org/yuv.php#NV21

維基鏈接都有實現NV21-> RGB轉換(至於是不是非常有效的樣本來源,但給出了一個好主意一般的做法)。如果你對在C或彙編中進行這種轉換感興趣,這是一個很好的信息來源(警告:NV21沒有代碼,而我對NV21的快速修改導致沒有什麼好處)。不過,它展示瞭如何將.S文件合併到ndk項目中,這實際上很簡單。

http://www.roman10.net/effective-color-conversion-yuv-rgb-in-android-in-assembly/

回到你的問題 - 轉化成B/W上。簡單地採用Y通道並將RGB三元組形成[Y,Y,Y],這會給你一個黑白圖像。或者也許只需製作一張L8圖像(例如,Y-> L)。

PS。 在轉換爲RGB期間,關於YUV值的範圍/縮放比例存在很大的混淆。我發現,攝像頭數據來自於滿擺幅(0-255,不16-235或16-240),以及矩陣乘法後的結果夾緊0-255給人以賞心悅目的結果,而擴展到0-255扭曲顏色(不用說,如果你縮放到其他範圍,比如16-240,這仍然是正確的)。這些觀察結果似乎違背了上述鏈接中描述的完整轉換過程的某些更精細的方面,但這是我發現的工作。

0

過來黑暗的一面 - 我們有餅乾:

http://sourceforge.net/projects/javaocr/

...並在Android上工作的OCR。沒有發佈實際的地理信息,因此請查看源代碼庫。隨時加入開發者名單,並要求問題有(和五言,以有利於項目)

+0

Спасибо。謝謝,但我會嘗試寫我自己的OCR的東西,但是我一定會用你的代碼作爲一些靈感。我有一個非常具體的任務,並沒有實時限制,所以我有時間玩弄自己的代碼。我更感興趣的是如何解碼我從相機獲取的原始格式。 – Vitaly 2012-03-31 15:20:06

+0

Незачто:)演示還涵蓋原始格式(從預覽,但它基本上是相同的)。歡迎您在同一個項目中分享您的OCR創意。 JavaOCR爲OCR使用不變矩和聚類分析 – 2012-03-31 15:30:21

0

可能是這個答案對於這個主題的作者沒有用,但是對於其他人來說可能會很有趣,因爲他/她自己的目的如何使用相機原始數據。這是ffmpeg。它可以編譯爲android。例如有一個項目可以給出如何去做的方法。 https://github.com/guardianproject/android-ffmpeg-java https://www.ffmpeg.org/ Android攝像頭可以通過這個命令 ffmpeg的飼料的ffmpeg -f rawvideo -pixel_format NV21 -video_size 320×240 -framerate 15

相關問題