首页 文章

在python opencv中imwrite和/或imread之后的图像像素值

提问于
浏览
0

我试图使用图像编辑器(如MS paint或paint.net)在图像上绘制具有固定颜色(如RGB = 255,0,0的纯红色)的边界框,然后在python中加载图像(例如opencv imread)通过查找具有此RGB值(或BGR值在0,0,255)的像素,以便我可以创建用于对象检测目的的标签 .

但是,保存并加载图像后,我看不到任何具有此类RGB或BGR值的像素 . 相反,这些像素在一个值范围内,可能远离我指定的值 .

我也尝试过这样的东西用于实验目的:

cv2.rectangle(img_arr, (10, 10), (60, 60), (0, 0, 255), thickness=1)

在此语句之后,我确实看到具有值(0,0,255)的像素 . 但是,当我运行cv2.imwrite然后cv2.imread像这样:

cv2.imwrite(full_path_name, img_arr)

然后:

img_arr = cv2.imread(full_path_name)

我注意到在这个新的img_arr中,没有任何像素具有这些BGR值了 . 问题是什么?

回到标记用于对象检测的图像的原始问题,我不想使用任何工具进行标记,因为大多数都检测鼠标运动,但是,我的对象检测任务是检测文本区域,这需要非常精确的边界框这样图像分割和字符识别的后期阶段就不会太难 . 因此,我更喜欢静态方式,以便可以调整边界框以使其准确,甚至可以进行检查 . 当它们是最终的时,我们创建标签 . 这个想法会起作用吗?

非常感谢你!

1 回答

  • 1

    使用 JPEG 作为图像处理任务的中间存储时要小心,因为它是一种有损格式,当您随后读回它们时,值可能会有所不同 .

    考虑使用无损 PNG 格式进行中间存储 . 或者使用NetPBM PGM (灰度)或 PPM (颜色)格式进行特别简单的读写格式 - 但要注意它不能保留元数据,例如版权或EXIF数据 .

相关问题