- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章快速解决cv2.imread()读取图像为BGR的问题由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
opencv读取图像为b,g,r方法,比如 。
展示的结果是正常的:
但是此时读取到的img已经为bgr方式了,如果我们再用其他使用rgb方式读取的函数进行读取时就会出错,比如我用plt对图像进行显示,效果如下:
因为plt函数是rgb方式读取的,所以会出错。这时我们可以手动改变img的通道顺序,如下:
这时img_rgb就是rgb顺序的了.那么这时再用cv2.imshow()显示出来,rgb错误:
补充:盘点踩过的关于cv2 和PIL 图像读取的一些小坑 。
PIL 读取图像时的像素顺序是标准的RGB 。
输出结果是 。
cv2 读取图像时的像素顺序是标准的BGR 。
输出结果是 。
若要cv2读取完图像也是RGB格式,则按如下方法 。
输出结果是 。
和用PIL 读取完的一致 。
首先我们先来看一下这个函数的定义 。
filename 。
参数传入的是图像路径,支持解析的图像格式基本上覆盖全了 。
flags 。
Flags指定了所读取图片的颜色类型, 默认值为1 。
对应值为 -1 到 4 。
参数 | Value |
---|---|
IMREAD_UNCHANGED | If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). |
IMREAD_GRAYSCALE | If set, always convert image to the single channel grayscale image. |
IMREAD_COLOR | If set, always convert image to the 3 channel BGR color image. |
IMREAD_ANYDEPTH | If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. |
IMREAD_ANYCOLOR | If set, the image is read in any possible color format. |
IMREAD_LOAD_GDAL | If set, use the gdal driver for loading the image. |
参数 | Value |
---|---|
flag=-1时 | 8位深度,原通道 |
flag=0 | 8位深度,1通道 |
flag=1 | 8位深度 ,3通道 |
flag=2 | 原深度,1通道 |
flag=3 | 原深度,3通道 |
flag=4 | 8位深度 ,3通道 |
IMREAD_UNCHANGED :不进行转化,比如保存为了16位的图片,读取出来仍然为16位.
IMREAD_GRAYSCALE :进行转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1.
IMREAD_COLOR :进行转化为三通道图像.
IMREAD_ANYDEPTH :如果图像深度为16位则读出为16位,32位则读出为32位,其余的转化为8位.
IMREAD_ANYCOLOR :
IMREAD_LOAD_GDAL :使用GDAL驱动读取文件,GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理.
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教.
原文链接:https://blog.csdn.net/liu13364876993/article/details/79867061 。
最后此篇关于快速解决cv2.imread()读取图像为BGR的问题的文章就讲到这里了,如果你想了解更多关于快速解决cv2.imread()读取图像为BGR的问题的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在使用并熟悉 cv2 ,今天我正在尝试使用 skimage . 我试图使用 skimage 读取图像和 cv2 .似乎他们都完美地阅读了图像。但是当我绘制图像的直方图但读取不同的库( skimag
scipy.ndimage.imread 刚刚在 scipy 中被弃用,所以我直接将代码切换为使用 pyplot - 但结果并不相同。我正在为 keras 中内置的学习算法导入图像 - 我以为这将是
我已经成功安装了 scipy、numpy 和 pillow,但是我得到如下错误 ImportError: cannot import name 'imread' 最佳答案 您是否遵循相同的步骤? im
这是我的代码中出现问题的部分。它应该计算图片中绿色像素的数量: img = Image.open('path.tif') BLACK_MIN = np.array([0, 20, 20], np.ui
我正在尝试读取未更改格式的图像,进行一些操作并将其转换回彩色格式 im = cv2.imread(fname,cv2.IMREAD_UNCHANGED) # shape(240,240,4) ....
我在 Ubuntu 14.04 机器上安装了最新的 Octave。但是,当我尝试运行 imread 命令时,它显示以下错误消息: octave:12> imread('newfile.png') er
我一直致力于检测离线手写签名的项目。我遇到了一个基本问题。我的程序无法使用 imread() 函数。它没有显示任何错误,但也没有加载图像。如果我检查图像,它会显示我指定的错误消息。我正在使用 Open
我在 opencv 函数中遇到问题。我可以用 IplImage* img = CvLoadImage("2_DeepViewOutput.png"); 但是我不能用 Mat img = imread(
我使用 visual studio 2013 和 opencv。我运行一个简单的代码来读取图像并显示它。我将图像从 Donloads 文件添加到我的项目的资源文件中。当我运行下面的代码时,image.
imread 创建的默认像素类型是什么?我测试了不同的图像,它们都给我未签名的具有不同 channel 的字符。如果我不问的话,imread 会用 signed char 创建一个像素类型吗明确? c
opencv读取图像为b,g,r方法,比如 img = cv2.imread("xx.jpg") cv2.imshow("xx",img)
我有一张从网上下载的图片(验证码)。 当我加载到 opencv 时,它似乎失去了它的属性,或者只是将透明背景与深色/黑色混合: 目前代码除了再次加载一个文字什么都不做: captchaImg = cv
我在 Ubuntu 上使用 Python 2.7,并且在开始为我的算法课分配作业之前我正在尝试使用图像。我已经下载了 numpy、scipy 和 skimage 包,但我不断收到“imread”、“t
我正在使用 plt.imread 来读取大的 .tiff 图像。由于尺寸较大,我只想选择要加载的图像的一部分。我想做类似的事情: plt.imread(filename, [s1:s2, r1:r2]
我在VS2010和Xcode 4.2上都遇到了OpenCV 2.3.1和2.4跨平台错误 如果我在将图像的路径作为绝对路径使用的同时使用cv::imread,那么它将起作用。如果这是相对路径,则不起作
我在尝试弄清楚如何将数据从cv.imread()发送到我的机器学习模型时遇到了麻烦。 从我的图像读取功能中,我得到一个numpy数组的列表,其中包含维度为(256、256、3)的图像。 # image
正如标题所说。我尝试使用 argv 和绝对路径加载图像并且它有效,但使用相对路径它没有。该图像与可执行文件位于同一目录中。我在 Windows 7 64 位上使用 visual studio 2013
文件名为 D:\remedi\Exercise\Xray\objects\object (2).png 并且有很多文件,例如object (3).png、object (4).png、object (
在Java中我想读取图像。为此,我使用了以下代码: BufferedReader br = ImageIO.read(new File('a.png')); 它可以工作。但是br中的值是这样的:-16
我正在使用 OpenCV 2.4.7 在 VS2012 上编译一个简单的项目。 所以当我这样做的时候: cv::Mat img = cv::imread("C:\lena.jpg",1); 然后我寻找
我是一名优秀的程序员,十分优秀!