gpt4 book ai didi

image-processing - OpenCV 显示 2 channel 图像(光流)

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:46 24 4
gpt4 key购买 nike

我将光流存储在 2 channel 32F 矩阵中。我想可视化内容,最简单的方法是什么?

如何将 CV_32FC2 转换为带有空蓝色 channel 的 RGB,imshow 可以处理?我正在使用 OpenCV 2 C++ API。

super 奖励积分

理想情况下,我会得到色调的流动角度和亮度的大小(饱和度恒定为 100%)。

最佳答案

imshow 只能处理 1 channel 灰度和 3-4 channel BRG/BGRA 图像。所以你需要自己做一个转换。

我认为你可以做类似的事情:

//extraxt x and y channels
cv::Mat xy[2]; //X,Y
cv::split(flow, xy);

//calculate angle and magnitude
cv::Mat magnitude, angle;
cv::cartToPolar(xy[0], xy[1], magnitude, angle, true);

//translate magnitude to range [0;1]
double mag_max;
cv::minMaxLoc(magnitude, 0, &mag_max);
magnitude.convertTo(magnitude, -1, 1.0 / mag_max);

//build hsv image
cv::Mat _hsv[3], hsv;
_hsv[0] = angle;
_hsv[1] = cv::Mat::ones(angle.size(), CV_32F);
_hsv[2] = magnitude;
cv::merge(_hsv, 3, hsv);

//convert to BGR and show
cv::Mat bgr;//CV_32FC3 matrix
cv::cvtColor(hsv, bgr, cv::COLOR_HSV2BGR);
cv::imshow("optical flow", bgr);

cv::waitKey(0);

关于image-processing - OpenCV 显示 2 channel 图像(光流),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693561/

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