python - 如何将 openCV 转换图像转换为原始格式

标签 python opencv

我已经将原始图像的大小从 200x200 调整为 128x128 ,因为 opencv 默认读取 BGR ,我处理了这一点,但在调整大小后它变成了灰度(如预期的那样)但我无法转换回其 RGB 格式

orignal = cv2.imread(os.path.join("/path","some_image.png"),0)

rgb = cv2.cvtColor(orignal, cv2.COLOR_BGR2RGB)

resized = cv2.resize(rgb,(128,128))

backtorgb = cv2.cvtColor(resized,cv2.COLOR_GRAY2RGB)

plt.imshow(backtorgb)

最后一行报错:

error: OpenCV(4.0.0) /io/opencv/modules/imgproc/src/color.hpp:259: error: (-2:Unspecified error) in function 'cv::CvtHelper::CvtHelper(cv::InputArray, cv::OutputArray, int) [with VScn = cv::Set<1>; VDcn = cv::Set<3, 4>; VDepth = cv::Set<0, 2, 5>; cv::SizePolicy sizePolicy = (cv::SizePolicy)2u; cv::InputArray = const cv::_InputArray&; cv::OutputArray = const cv::_OutputArray&]' Invalid number of channels in input image: 'VScn::contains(scn)' where 'scn' is 3

最佳答案

使用 cv2.resize() 调整图像大小不应将彩色图像变成灰度图像。它只是将图像 src 缩小或放大到指定大小。要将图像转换为灰度,请使用 cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)。您的错误消息还确认调整大小后的图像具有 3 个颜色 channel 。这是确认 cv2.resize() 不会将图像更改为灰度。

example

import cv2

image_file = 'assets/color_palette.jpg'

original = cv2.imread(image_file)
cv2.imshow('original', original)

rgb = cv2.cvtColor(original, cv2.COLOR_BGR2RGB)
cv2.imshow('rgb', rgb)

resized = cv2.resize(rgb, (128,128))
cv2.imshow('resized', resized)

key = cv2.waitKey(0)

关于python - 如何将 openCV 转换图像转换为原始格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55323468/

相关文章:

python - 如何在 matplotlib pyplot 中将标签添加到 y 轴的区间组?

python - 在 Notepad++ 中的匹配模式之前添加具有特定模式的新行

c - 在 OpenCV 中获取窗口的大小

c++ - boost库的序列化+压缩问题

python - 重定向在 apache beam 中意味着什么(python)

python - 如何让 tkinter 按钮返回其文本值

python - 曲线插值

python - OpenCV:压缩后图像大小增加

qt - Qt程序以代码-1073741819退出

c++ - 在 OpenCV 中处理大图像