【发布时间】:2021-05-27 07:30:17
【问题描述】:
我正在读取来自cv2.COLOR_RGB2BGR 格式的相机的图像。以下是我想要实现的临时解决方法:
import cv2
from skimage import transform, io
...
_, img = cam.read()
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite("temp.png", img)
img = io.imread("temp.png", as_gray=True)
img = transform.resize(img, (320, 240), mode='symmetric', preserve_range=True)
我找到了一种从this post 进行这种转换的方法,但是,图像数据似乎与我从路径中读取相同的图像不同?
我还从this documentation 发现我可以使用img_as_float(cv2_img),但是这种转换不会产生与io.imread("temp.png", as_gray=True) 返回的结果相同的结果
有效进行这种转换的正确方法是什么?我应该先将图像转换回 RGB 然后使用 img_as_float() 吗?
【问题讨论】:
-
您的问题缺少很多必要的细节,老实说,这很令人困惑。我假设,
_, img = cam.read()是 OpenCV VideoCapture 调用!?那么,为什么要使用cv2.COLOR_RGB2BGR进行转换呢?img在使用 OpenCV 函数时已经在 BGR 颜色空间中。然后,您保存彩色图像,但将该图像加载为灰度!?您真正想要实现什么转换?您能否用文字描述所需的转换?一般来说:OpenCV 图像是 skimage 图像,因为这两个库都使用 NumPy 数组来表示图像。颜色空间,处理数据类型不同,是的。 -
@HansHirse 我在问题中提到这是我收到的 cv2 图像的传入格式。该代码用于说明,但我实际上无法控制前两行。据我了解,使用 io.imread(as_grey) 会产生与使用 cv2 将图像转换为灰度略有不同的图像。
-
@HansHirse 我需要做的就是将此 cv2 bgr 图像转换为相同的 skimage,就好像我首先将图像保存到磁盘然后使用 io.imread() 重新加载图像一样,因为再次,我读到从我发现的方法中直接转换会产生与写入然后重新加载相似但略有不同的图像。我也在问我是否也对这个假设有误。
标签: python cv2 scikit-image image-conversion