gpt4 book ai didi

OpenCV 的 cvtColor 抛出异常 : Invalid number of channels in input image

转载 作者:行者123 更新时间:2023-12-02 16:19:47 29 4
gpt4 key购买 nike

我有一个 cv::Mat img我正在尝试转换为 CV_8UC3使用这个:

cv::cvtColor(img, dst, cv::COLOR_GRAY2RGB);

它抛出这个错误:
 Exception: OpenCV(4.2.0) external/opencv/modules/imgproc/src/color.simd_helpers.hpp:92: error: 
(-2:Unspecified error) in function 'cv::impl::(anonymous namespace)::CvtHelper<cv::impl::(anonymous namespace)::Set<1, -1, -1>,
cv::impl::(anonymous namespace)::Set<3, 4, -1>, cv::impl::(anonymous namespace)::Set<0, 2, 5>, cv::impl::(anonymous namespace)::NONE>::CvtHelper(cv::InputArray, cv::OutputArray, int)
[VScn = cv::impl::(anonymous namespace)::Set<1, -1, -1>, VDcn = cv::impl::(anonymous namespace)::Set<3, 4, -1>, VDepth = cv::impl::(anonymous namespace)::Set<0, 2, 5>,
sizePolicy = cv::impl::(anonymous namespace)::NONE]'
Invalid number of channels in input image:
'VScn::contains(scn)' where 'scn' is 3

任何想法这可能意味着什么?

最佳答案

该错误意味着图像已经是“颜色”(意味着它已经有 3 个 channel )。 OpenCV 无法从 GRAY 转换它至RGB因为灰度图像只有一个颜色 channel 。
CV_8UC3意味着您有 3 个 8 位深度的颜色 channel 。如果你真的想确保你有一个 CV_8UC3 ,您可以在制作图像时尝试这样的操作:

// create a new 320x240 image
Mat img(Size(320,240),CV_8UC3);

如果您分享您的创作方式 img ,我可以确认是这种情况,但无论如何这就是错误的含义。

更新

This answer为调试 Mat 提供了一些很好的指导对象。根据错误代码,您已经有一个 3 channel 图像,因此可以处理 C3部分。 8U部分意味着它都是 8 位无符号二进制数据,范围为 0 到 255。一旦你知道我上面提到的脚本的输出,你就可以相应地对其进行缩放或转换。

This answer详细说明如何转换为不同的位深度。

关于OpenCV 的 cvtColor 抛出异常 : Invalid number of channels in input image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61111855/

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