我使用Renderscript內在的顏色矩陣來應用棕褐色濾鏡,但它將整個圖像變成綠色,而不是給它呈現淡黃色(棕褐色)。這個線程的答案是我目前測試的基礎(http://answers.opencv.org/question/99510/opencv4android-31-mat-to-allocation-renderscript/)。位圖變成了OpenCV的墊然後進入分配和傳遞到的renderScript在以下內在做的工作:通過Renderscript應用棕褐色ScriptIntrinsicColorMatrix將圖像轉換爲綠色陰影
Element element = Element.RGBA_8888(mRS);
ScriptIntrinsicColorMatrix colorMatrix = ScriptIntrinsicColorMatrix.create(mRS, element);
final Matrix4f mSepia = new Matrix4f(new float[]{
0.189f, 0.769f, 0.393f, 0f,
0.168f, 0.686f, 0.349f, 0f,
0.131f, 0.534f, 0.272f, 0f,
0.000f, 0.000f, 0.000f, 1f});
colorMatrix.setColorMatrix(mSepia);
colorMatrix.forEach(inputAllocation, outputAllocation);
我排除在這個複雜的位圖的錯誤墊分配過程中,因爲當我試着幾個星期後直接在Bitmap上運行內在函數,我得到了完全相同的綠色問題。我認爲它應該是一個矢量(R,G,B,A),然後乘以我給出的矩陣,但是一定會發生一些可疑的事情。
有沒有人知道這裏發生了什麼?
是源從文件或攝像頭的位圖?如果相機不應該使用YUV格式? –
它來自文件的位圖。當我在這個星期前做了一個OpenCV Mat rgba的時候,我把它變成了一個位圖argb_8888,並且出現了同樣的問題。 – AllBecomesGood
更新:當直接從Camerafeed進行流式處理並讓Renderscript執行轉換(YUV到RGB,然後應用colormatrix並轉換爲位圖以顯示在屏幕上)時,我會得到相同的奇怪綠色色調。我懷疑涉及的Bitmaps,也許它保存像素的方式是不同的,並導致怪異。 – AllBecomesGood