当前位置: 首页 > 知识库问答 >
问题:

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

扈韬
2023-03-14

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

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

我还试着用这样的东西做实验:

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

在这句话之后,我确实看到了带有值(0、0、255)的像素。然而,当我运行cv2时。我写,然后是cv2。我是这样读的:

cv2.imwrite(full_path_name, img_arr)

及以后:

 img_arr = cv2.imread(full_path_name)

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

回到为目标检测标记图像的最初问题,我不想使用任何标记工具,因为大多数工具都在检测鼠标运动,然而,我的目标检测任务是检测文本区域,这需要非常精确的边界框,以便图像分割和字符识别的后期阶段不会太难。因此,我更喜欢静态的方式,以便边界框可以调整到准确,甚至可以被审查。当它们最终确html" target="_blank">定时,我们创建标签。这个想法会奏效吗?

非常感谢你!

共有1个答案

祁承望
2023-03-14

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

考虑使用无损的PNG格式进行中间存储,或者使用NetPBMPGM(灰度)或PPM(颜色)格式进行特别简单的格式读取和写入-尽管要注意它不能持久化元数据,如版权或EXIF数据。

 类似资料:
  • 我使用imread(………-GRAYSCAle)将图像(png)文件直接从3个通道加载到1个通道,我可以在灰度上看到图像,但像素值是0,而不是1。感谢您的帮助!

  • 本文向大家介绍Python OpenCV处理图像之图像像素点操作,包括了Python OpenCV处理图像之图像像素点操作的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python OpenCV图像像素点操作的具体代码,供大家参考,具体内容如下 0x01. 像素 有两种直接操作图片像素点的方法: 第一种办法就是将一张图片看成一个多维的list,例如对于一张图片im,想要操作第四行第

  • 问题内容: 用相机拍照后,我用以下代码保存图像: 这会将图像保存在相机胶卷中。另外,我想将URL保存到Core Data中此保存的图像。是否可以检索URL(或路径),以便我只需要保存此URL,而不是保存核心数据中的完整图像? 问题答案: 在阅读了很多用ObjectivC编写的答案之后,我终于想出了如何使用Xcode 6.2在Swift中编写此答案:

  • 嘿,我正在尝试做一个程序,它加载一个彩色图像作为灰度画布,然后返回颜色点击像素。当setrgb()方法没有做它应该做的事情时,我就被困在这里了。我已经通过getRGB()从原始图像中复制了颜色,并使用setRGB()将其分配给新图像。我试图输出两个像素颜色值,但他们不一样。请帮我解决这个问题。以下是到目前为止的代码:

  • 从原始图像中我们可以看到,我的ROI是白色的棉花圈在红色的边界中。当我分割这幅图像时,我得到了如图所示的二值图像。我们注意到,与原始图像相比,二值图像中存在一些缺失区域。因此,我要计算ROI的原始图像的像素数和二值图像中白点的像素数。这样我就可以计算ROI的实际像素和实际分割的像素数量的差异。 谢谢你。

  • 如果要对图像进行进一步的处理,就可以先通过getImageData()方法获取图像像素,进行处理后再通过putImageData()方法,把处理后的像素重新绘制到画布中。 1)getImageData()方法 该方法用于获取画布上指定区域的图像像素数据。调用格式如下: var data = context.getImageData(sx, sy, sWidth, sHeight) 其中,sx、s