我已经将原始图像的大小从 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()
不会将图像更改为灰度。
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/