gpt4 book ai didi

c++ - 使用opencv将图像从BGR转换为ARGB

转载 作者:太空狗 更新时间:2023-10-29 20:22:41 28 4
gpt4 key购买 nike

  • 我想将 BGR 图像转换为 ABGR/ARGB。opencv 中有转换 BGR2RGBA,但没有 BGR2ABGR 或 BGR2ARGB。
  • 可以用opencv或者其他方法吗?

最佳答案

所需的操作可以通过使用 cv::mixChannels 交换图像 channel 来完成,如下所示:

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 数组是映射函数,它指定源中的哪些 channel 将被复制到目标图像的哪些 channel 。这些对表示输入的 channel 号 0 将被复制到输出的 channel 号 31122, channel 号 3 将被复制到输出的 channel 号 0

或者,我们可以拆分图像 channel ,交换所需的 channel 并再次合并。可以按如下方式完成:

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);

关于c++ - 使用opencv将图像从BGR转换为ARGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36787317/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com