gpt4 book ai didi

opencv - Aruco 期望什么图像编码?

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

我的应用程序接收可以具有 bayer_rggb8 编码的相机图像。我需要将这些图像转换为 bgr8/rgb8/mono8 吗?或者 Aruco 可以检测拜耳编码的 cv::Mat 中的标记吗?

我使用的是 Aruco 3.0.10。以下是我正在使用的功能。

    /**Detects the markers in the image passed
*
* If you provide information about the camera parameters and the size of the marker, then, the extrinsics of
* the markers are detected
*
* @param input input color image
* @param detectedMarkers output vector with the markers detected
* @param camParams Camera parameters
* @param markerSizeMeters size of the marker sides expressed in meters
* @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the
* Z axis
*/
void detect(const cv::Mat& input, std::vector<Marker>& detectedMarkers, CameraParameters camParams,
float markerSizeMeters = -1, bool setYPerperdicular = false);

我试着只给它 bayer_rggb8 编码图像,这似乎有效(它检测标记)。但我想知道这是否可行,或者我是否只是幸运地获得了我的测试图像。

左图:原始图像,错误显示为 brg8。右:图像转换/颜色插值到 BGR8 并用标记注释。 (在左侧图像上检测到标记。) enter image description here

最佳答案

它接受 CV_8UC1 灰度图像 (​​mono8) 或 CV_8UC3 彩色图像 (bgr8)。它不适用于拜耳编码垫。


如有疑问,请检查源代码。

可以看到aruco.cpp第一个操作是将图像转换为灰度:

_convertToGrey(_image.getMat(), grey);

函数_convertToGray接受 CV_8UC1(已经可以)或 CV_8UC3(转换为灰度):

static void _convertToGrey(InputArray _in, OutputArray _out) {

CV_Assert(_in.getMat().channels() == 1 || _in.getMat().channels() == 3);

_out.create(_in.getMat().size(), CV_8UC1);
if(_in.getMat().type() == CV_8UC3)
cvtColor(_in.getMat(), _out.getMat(), COLOR_BGR2GRAY);
else
_in.getMat().copyTo(_out);
}

关于opencv - Aruco 期望什么图像编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50484433/

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