添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
私奔的牛腩  ·  ASP.NET MVC:自定义 ...·  1 年前    · 
打酱油的排球  ·  WPF CheckBox与WinForm ...·  1 年前    · 
开朗的路灯  ·  C# ...·  1 年前    · 

使用OpenCV加载图像时,默认使用BGR的格式,而使用matplotlib显示图像时又采用RGB的格式,因此显示图像时,会显得非常奇怪。

如以一张船的照片为例,原图如下:

在这里插入图片描述
使用OpenCV进行读取:

import cv2
import matplotlib.pyplot as plt
import numpy as np
ship_BGR = cv2.imread('ship.jpg',cv2.IMREAD_COLOR)  # 第二个参数可以不写,默认值就是以彩色图像方式读取
plt.imshow(ship_BGR)
plt.show()

输出的图像结果:

在这里插入图片描述
可以很容易发现,这和原图的颜色差的非常多,这一切原因都在于读取channel的顺序,因此需要改变channel顺序。

ship_RGB_1 = ship_BGR[:,:,::-1]  # BGR和RGB正好是顺逆序关系
plt.imshow(ship_RGB_1)
plt.show()

输出的图像结果:

ship_RGB_2 = cv2.cvtColor(ship_BGR, cv2.COLOR_BGR2RGB)
plt.imshow(ship_RGB_2)
plt.show()

输出的图像结果:

在这里插入图片描述
以上两种方法均适用于BGR图像转换为RGB图像,小伙伴们可根据自己的喜好各取所需。

目录方法一方法二使用OpenCV加载图像时,默认使用BGR的格式,而使用matplotlib显示图像时又采用RGB的格式,因此显示图像时,会显得非常奇怪。如以一张船的照片为例,原图如下:使用OpenCV进行读取:import cv2import matplotlib.pyplot as pltimport numpy as npship_BGR = cv2.imread('ship.jpg',cv2.IMREAD_COLOR) # 第二个参数可以不写,默认值就是以彩色图像方式读取plt. import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) #RGB转换为GRAY 这里的GRAY是单通道的 cv.imshow(gray, gray) hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV) #RGB转换为HSV cv.imshow(hsv, hsv) yuv = cv.cvtColor(img, cv.COLOR_RGB2YUV) #RGB转换为YUV
OpenCV学习(2)——图像BGR格式解读1. opencv读取的图片数据格式2. BGR含义 1. opencv读取的图片数据格式 opencv读取的图片数据格式为numpy的nparray格式。 一张二维图片是由像素点构成,如下图所示: 其中行与列确定了像素点的位置,值确定了颜色,通常为三通道RGB值 举例:[125,225,3] 对应维度:[图片高度,图片宽度,像素BGR值]==[数组行数,数组列数,像素BGR值] Ps:opencv读取的图片数值为BGR格式,与PIL库读取图片得到的RGB格式不
文章目录方法1:数组切片的方法进行调方法2:opencv 自身的方法进行调演示 方法1:数组切片的方法进行调 img = cv2.imread("cat.jpg")[:,:,::-1] ax = plt.imshow(img) 对于一张图来说,是一个三位的向量,W∗H∗CW * H * CW∗H∗C ,其中 CCC 是通道数,这个切片的操作,是保留 W∗HW * HW∗H 操作不变,对第三个维度的操作进行反即: [::−1][::-1][::−1],这样 CCC 中包含的 B,G,R 就变成 R
// @param: // input: {bgr_image:"读取图像BGR格式的uchar字符数组", image_width:"图像的宽度", image_height:"图像的高度"} // output: {rgb_image:"化为RGB格式图像的uchar字符数组"} // return: {0:"成功", 1:"输入或输出uchar数组错误"} int BGR2RGB(const unsigned char* bgr_image , const int image_width , c.
一、格式转换 opencv读取图片的默认像素排列是BGR,需要转换。PIL库是RGB格式。 caffe底层的图像处理是基于opencv,其使用的颜色通道顺序与也是BGR(Blue-Green-Red),而日常图片存储时颜色通道顺序是RGB。 在Python中,将RGB顺序的图像BGR顺序,需要调整channel dimension的各颜色通道顺序。 img = cv2.imread(“001.jpg”) img_ = img[:,:,::-1].transpose((2,0,1)) ① 在opencv里,图格式HWC,其余都是CHW,故transpose((2,0,1))
主要实现RGB32bit图像数据转换RGB24bit图像数据void RGB32TO24(unsigned char* src, unsigned char* data, int width, int height)和RGB24bit图像数据转换RGB32bit图像数据, void RGB24TO32(unsigned char* src, unsigned char* data, int width, int height)
当使用opencv函数imread()读取图片时,颜色的顺序是BGR(blue、green、blue),因此我们经常需要将BGRRGB。 二、转换 可以通过以下几种方法实现BGRRGB # 方法一 im_bgr = cv2.imread('data/src/lena.jpg') im_rgb = im_bgr[:, :, [2, 1, 0]] Image.fromarray(im_rgb).save('data/dst/lena_swap.jpg') # 方法二 im_bgr = cv2.
opencv中默认读取的图片格式是BGR,并非RGB. 下面是opencv的更直接BGRRGB方法: cv::cvtColor(bgr_img, rgb_img, cv::COLOR_BGR2RGB); 下面是通道的分离与合并: std::vector<cv::Mat> MatVct_1(3); cv::split(src_img, MatVct_1); //这句话把src_img分离为三个Mat std::vector<cv::Mat> M