我已经把我的原始图像从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
对于“调整大小”选项,可以尝试如下操作:
记住纵横比是很重要的,这样图像看起来不会倾斜或扭曲,所以我们需要计算新图像与旧图像的比率
调整大小时发生了什么:
第一个参数是我们要调整大小的原始图像。第二个参数是我们先前在dimensions变量中计算的新图像的计算尺寸。第三个参数告诉我们使用哪种算法。在
如果您需要将图像从BGR转换为RGB,您应该能够在调整大小后立即执行此操作。你应该能够在转换它之前调整它的大小
使用
cv2.resize()
调整图像大小不应使彩色图像变为灰度。它只需将图像的大小调整到指定的大小。要将图像转换为灰度,请使用cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
。您的错误消息还确认调整大小的图像有3个颜色通道。这里确认cv2.resize()
不会将图像变为灰度。在相关问题 更多 >
编程相关推荐