- 我想將BGR圖像轉換爲ABGR/ARGB。在opencv中轉換BGR2RGBA,但不轉換BGR2ABGR或BGR2ARGB。
- 這可能與opencv或使用任何其他方法?
3
A
回答
3
所需的操作可以通過使用cv::mixChannels
如下調換圖像通道來完成:
cv::Mat bgr, bgra;
//bgr initialization code here...
//.
//.
//.
cv::cvtColor(bgr, bgra, cv::COLOR_BGR2BGRA);
cv::Mat abgr(bgra.size(), bgra.type());
int from_to[] = { 0,3, 1,1, 2,2, 3,0 };
cv::mixChannels(&bgra,1,&abgr,1,from_to,4);
from_to
陣列是映射函數,它指定從源信道將被複制到該目標圖像的頻道。在對指示輸入的信道號0
將被複制到的通道號3
輸出的,1
到1
,2
到2
,和信道數目3
將被複制到通道的輸出的數目0
。
或者,我們可以拆分圖像通道,交換所需通道並重新合併。這是可以做到如下:
cv::cvtColor(bgr, bgra, cv::COLOR_BGR2BGRA);
std::vector<cv::Mat> channels_bgra;
cv::split(bgra, channels_bgra);
std::vector<cv::Mat> channels_abgr = { channels_bgra[3], channels_bgra[1], channels_bgra[2], channels_bgra[0] };
cv::merge(channels_abgr, abgr);
2
OpenCV的不支持ARGB或ABGR格式,所以你將無法顯示或使用上的一些它的功能......不過,就可以與split和merge功能創建它們OpenCV的。這裏有一些代碼來解釋我的意思。
cv::Mat src, final_image;
// fill src as you prefer
std::vector<cv::Mat> channels;
cv::split(src, channels); // this will put each channel in a mat in the vector
// swap or add channels in the vector
cv::Mat alpha(src.rows, src.cols, CV_8U, cv::Scalar(255));
channels.push_back(alpha);
std::reverse(channels.begin(), channels.end()); //needs <algorithm>
// merge the channels in one new image
cv::merge(channels, final_image);
這是可以做到更快(也許這將是多麼短)與功能mixChannels,但我會說,這是一個更加混亂一點點。
相關問題
- 1. OpenNI RGB圖像到OpenCV BGR IplImage轉換?
- 2. python - opencv - 將像素從bgr轉換爲hsv
- 3. 如何將圖像從BGR轉換爲LAB與opencv 2.4 python 2.7和numpy
- 4. 將BGR位圖轉換爲RGB
- 5. 如何將cvCvtColor轉換爲opencv中的cvtColor調用(BGR到HSV)?
- 6. 如何將位圖轉換爲圖像<Bgr, Byte>
- 7. 將BGRA轉換爲ARGB
- 8. 在opencv中將bgr轉換爲hsv時出現塊狀行爲
- 9. 使用opencv將肖像圖像轉換爲肖像
- 10. 如何將ImageBox.Image轉換爲圖像<Bgr, Byte>
- 11. 在EmguCV中將Bgr圖像轉換爲YCbCr?
- 12. 將bgr轉換爲ycbcr並在opencv中分開通道
- 13. 無法在OpenCV中將灰色轉換爲BGR
- 14. 在OpenCV中將YUV轉換爲BGR或RGB
- 15. 將pointcloud2數據轉換爲opencv圖像
- 16. 將Basler圖像轉換爲OpenCV
- 17. openCV將Mat轉換爲灰度圖像
- 18. 使用OpenCV將光柵圖像轉換爲矢量圖形?
- 19. 如何使用OpenCV在Python中將單個BGR數組轉換爲HSV數組?
- 20. 如何將int *(bgr圖像)從C++轉換爲unity3d紋理圖像?
- 21. 如何將Bgr像素轉換爲EmguCV中的Hsv像素?
- 22. Opencv轉換圖像
- 23. 用OpenCV轉換圖像
- 24. 使用OpenCV將12位拜耳圖像轉換爲8位RGB
- 25. 使用OpenCV將雲數據轉換爲2d圖像
- 26. 如何使用opencv將圖像轉換爲Python中的矩陣
- 27. OpenCV:將特定BGR值的所有像素設置爲另一個BGR值
- 28. Actionscript 3.0將HEX轉換爲ARGB
- 29. 將ARGB轉換爲WPF中的RGB
- 30. Android - 將ARGB顏色轉換爲RGB
你可以用'BGR2BGRA'轉換,然後按['mixChannels'](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#混頻道)重新排序頻道。 – sgarizvi
如果我重新排列頻道,那麼它會正常工作? – Sagar
它應該工作正常。嘗試一下,看看會發生什麼。如果它不起作用,您可以隨時拆分頻道,重新排序和合並。 – sgarizvi