python - 灰度转换问题

我收到以下错误:

cv.error: Incorrect number of channels for this conversion code

来自以下代码:
cv.CvtColor(frame, gray, cv.CV_BGR2GRAY)

有什么建议吗?

最佳答案

查看frame的 channel 数和 gray .要么使用调试器,要么在转换之前放置这一行:

printf("frame.nChannels: %d gray.nChannels: %d\n", frame.nChannels, gray.nChannels);
frame需要是 3 个 channel (RGB)。 gray需要1个 channel 。除此之外的任何事情,转换都会失败。在这种情况下:
  • 您可以强制frame总是 通过传递 cv.CV_LOAD_IMAGE_COLOR 加载为 RGB作为 cv.LoadImage 的第二个参数, 如果您从文件
  • 加载它
  • 创建时请确保gray ,您指定它只有 1 个 channel ,例如gray=cv.CreateImage(cv.GetSize(frame), frame.depth, 1)

  • 看 OpenCV API有关更多信息的相应功能。关于 Python 的部分是第 3 章,但由于 Python 包装器只是重用了底层的 C 代码,因此第一部分也是相关的。

    https://stackoverflow.com/questions/4839937/

    相关文章:

    opencv - 如何在ÅngströmLinux上安装OpenCV?

    qt - 整合QT和OpenCV?

    c# - 即使解决方案中的示例正常工作,emgucv示例的精确副本也无法工作

    opencv - 如何使用 EmguCV 检测小 Blob ?

    opencv - 在OpenCV中使用libjpeg将IplImage压缩为JPEG

    android - 适用于Android的OpenCV示例

    opengl - 纹理会影响对象的颜色

    qt - Qt GUI和OpenCV2.2镜像之间的干扰问题

    docker - 使用 yum 进行多阶段构建

    image-processing - 为什么 cv::Dilate 的第三个参数失败?