好吧,我一直在嘗試和在線搜索,但我找不到這個。OpenCV imwrite,顏色錯誤:我使用convertTo/cvColor的哪個參數?
我:
- OpenCV4Android我使用以混合方式,其中:Java和本機。與
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
這獲得
墊子不能改爲本地,因爲它是別人的庫,它完全是建立在非母語的方式。
本地方法,而我使用
mFrame.nativeObj
,並使用通過這個太:JNIEXPORT int JNICALL Java_com_... (...jlong addr ...) { Mat& mrgba = *((Mat*)addr); // do stuff imwrite(mrgba, ...); }
現在......我用這個矩陣,然後我把它寫有imwrite
,都在這個本地部分。雖然imwrite寫入文件,但它的顏色都是錯誤的。紅色,他們應該是白色,綠色,他們應該是黑色和紫色,他們應該是我的桌子的顏色,即淡黃色。現在,我不想盲目試圖cvColor
和convertTo
,我寧願知道的東西。
那是什麼我應該知道的是首先用
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
檢索和然後通過JNI天然的OpenCV幀頻道,類型,信道階數和諸如此類的東西的多少?實際上,我需要對原生進行哪些轉換以表現行爲?
我不想這樣做。但是,如果我這樣做,那麼寫入的圖像全部都是綠色陰影,不會發現紅色或藍色。 (當然更不用說活動中的顯示也是錯誤的顏色。) – Diana
它難以猜測幀的通道順序......但是根據文檔,OpenCV總是以BGR順序讀取圖像......所以你可以玩cvtColor(),一旦你得到所需的結果,你可以嘗試解釋它以更好地理解... –
我已經嘗試了各種轉換,但都沒有成功,因此問題在這裏。除非沒有其他選擇,否則我不打算盲目嘗試cvtColor的所有組合。 – Diana