当前位置: 首页 > news >正文

公司做网站怎么做百姓网

公司做网站怎么做,百姓网,自己开公司,杭州知名的网站建设策划引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图,多通道图像有三通道24位真彩色RGB图,8位伪彩色图像,YCbCr图像等。本文先介绍各种格式图像的特点,随后讲…

引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图,多通道图像有三通道24位真彩色RGB图,8位伪彩色图像,YCbCr图像等。本文先介绍各种格式图像的特点,随后讲解图像的不同加载方法和格式转换语句,图像数据不同存储方式的维度变化,以及如何提取RGB每个通道的图片。

文章目录

    • 一、常见图像格式介绍
      • 1.1 grayscale灰度图
      • 1.2 二值图像
      • 1.3 PNG格式图像
      • 1.4 RGB格式图像
      • 1.5 RGBA图像
      • 1.6 8位伪彩色图
    • 二、图像加载和格式转换
      • 2.1图像加载方式
        • 2.1.1 调用`Image.open(img_path)`加载图像
        • 2.1.2 调用`cv2.imread(img_path,flags=1)`加载图像
      • 2.2 图像格式转换
        • 2.2.1 grayscale灰度图
        • 2.2.2 二值图像
        • 2.2.3 RGB格式图像
        • 2.2.4 PNG格式图像
        • 2.2.5 RGBA图像
        • 2.2.6 YCbCr图像
    • 三、区分numpy.array和torch.tensor存储图像维度变化
    • 四、RGB各通道图像提取

一、常见图像格式介绍

1.1 grayscale灰度图

灰度图为单通道图像,每个像素值为8bit,像素取值范围:0~255,其中0:黑,255:白,其他像素值表示不同的灰度等级。从RGB图转换成灰度图,像素值转换公式【gray = 0.299R+0.587G+0.114*B】。
示例:模仿灰度图像素值的示例代码及显示效果

img_gray = np.array([[0,120,230],[255,60,150],[100,60,30]])
print('image pixel values:\n',img_gray)
plt.imshow(img_gray,cmap=plt.cm.gray)
plt.title('Display image pixel values')
plt.axis('off')		#取消坐标系
plt.show()###
image pixel values:[[  0 120 230][255  60 150][100  60  30]]

在这里插入图片描述

1.2 二值图像

图像中只有两种像素值黑与白,黑:0,白:1。
示例:将上例中的灰度图像转换成二值图

img_gray = np.array([[0,120,230],[255,60,150],[100,60,30]])
#像素值>127变成1,否则变成0
img_binary = np.where(img_gray>127,1,0)
print('binary image pixel values:\n',img_binary)
plt.imshow(img_binary,cmap='gray')
plt.title('Display binary image pixel values')
plt.show()###
binary image pixel values:[[0 0 1][1 0 1][0 0 0]]

在这里插入图片描述

1.3 PNG格式图像

png格式图像一般为8bit图像,每个像素值对应+的RGB三分量通过查阅调色板获取。调色板数据样式:

索引号RGB
0000
255255255255
  1. 每个png图片都有属于自己的调色板,调色板获取代码如下
img_path = r'F:\pytorch_project\panda.png'
image = Image.open(img_path).convert('P')if image.mode == 'P':palette = image.getpalette()
else:print('picture has no palette')
  1. 打印调色板信息列举了两种常用的方法。方法一:由于调色板每个索引编号对应三个颜色分量,所以可以对调色板列表直接变成ndarray变成最后维度为3的数组后转换成列表,并将结果变成字典{索引号:color元素}。方法二:对列表中相邻3个元素封装成一个颜色元组。
# 方法一:对palette直接变形
palette_reshape = np.reshape(palette, (-1, 3)).tolist()
# 转换成字典子形式
palette_dict = dict((i, color) for i, color in enumerate(palette_reshape))
print(palette_dict)
print('-'*50)
# 方法二:对列表中相邻3个元素封装成一个颜色元组
palette_dict = {}
for i in range(0,len(palette),3):color = (palette[i],palette[i+1],palette[i+2])palette_dict[i//3] = colorprint(palette_dict)
  1. 将字典数据存入json格式文件中。
#将字典写入文件
json_str = json.dumps(pd)
with open("palette.json", "w") as f:f.write(json_str)

1.4 RGB格式图像

传统的红绿蓝三色图有三个通道,每个通道分量用8bit,取值范围:0~255,每个像素值共有24bit。

1.5 RGBA图像

图像为32bit,前24bit存储RGB三通道像素值,最后8bit存储透明度信息。

1.6 8位伪彩色图

每个像素值代表图像像素表的索引地址,在像素表中RGB三分量不完全相同。

索引号RGB
25500
绿02550
2552550

二、图像加载和格式转换

2.1图像加载方式

图像加载可以通过调用PIL库加载,也可以调用cv2库加载图像。

2.1.1 调用Image.open(img_path)加载图像
img_path = r'F:\pytorch_project\plane.jpg'
image = Image.open(img_path)
img = np.array(image)
2.1.2 调用cv2.imread(img_path,flags=1)加载图像

flags属性:flags=0,提取单通道黑白图像。flags=1提取三通道彩色图像。

注意cv2.imread()提取的彩色图像格式为【H,W,C】,最后的通道维度顺序是BGR,在使用过程中需要对最后一个维度的数据进行转置操作变成熟悉的RGB格式(使用列表转置操作list[::-1])。

# 1.提取单通道图片并展示
img_path = r'F:\pytorch_project\plane.jpg'
image = cv2.imread(img_path,flags=0)
img = np.array(image)
plt.imshow(img,cmap='gray')
plt.show()# 2.提取彩色图片并展示
img_path = r'F:\pytorch_project\plane.jpg'
image = cv2.imread(img_path,flags=1)
img = np.array(image)
plt.imshow(img[:,:,::-1])
plt.show()

也可以使用cv2模块内的imshow()显示图片,但是需要设置关闭窗口的按键响应。

img_path = r'F:\pytorch_project\plane.jpg'
image = cv2.imread(img_path,flags=1)	img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('image',img_gray)## 键入esc时退出,s保存退出
k = cv2.waitKey(0)
if k == 27:cv2.destoryAllWindows()
elif k == ord('s'):cv2.imwrite('img_1.jpg', img_gray)cv2.destoryAllWindows()

2.2 图像格式转换

图像转换成项目需要的格式调用函数为:Image.open(img_path).convert(format_str)
format_str参数:**‘RGB’,‘L’, ‘1’,‘P’,‘RGBA’, ‘YCbCr’**等。

2.2.1 grayscale灰度图

可以从RGB图通过提取各通道像素值经过公式运算转换成灰度图,实现公式【gray = 0.299R+0.587G+0.114*B】,也可以直接调用语句img.convert('L')或’'转换格式。

image = Image.open(img_path).convert('L')
plt.imshow(image,cmap='gray')
plt.show()

此外,img.convert('I')表示32位整型灰度图,img.convert('F')表示32为浮点型灰度图。

2.2.2 二值图像
image = Image.open(img_path).convert('1')
2.2.3 RGB格式图像
image = Image.open(img_path).convert('RGB')
2.2.4 PNG格式图像
image = Image.open(img_path).convert('P')
2.2.5 RGBA图像

图像为32bit,前24bit存储RGB三通道像素值,最后8bit存储透明度信息,语法为:

image = Image.open(img_path).convert('RGBA')
2.2.6 YCbCr图像

YCbCr图为24bit彩色图,Y表示亮度通道,Cb和Cr表示两个色度通道,肉眼对亮度通道敏感,对两个色度通道进行下采样。语法为:

image = Image.open(img_path).convert('YCbCr')

除了上面介绍的使用PIL库的convert()函数进行格式转换,也可以使用cv2.cvtColor()函数进行图像格式转换。

三、区分numpy.array和torch.tensor存储图像维度变化

numpy.ndarray存储的图像维度为(宽、高、通道)【W,H,C】,torch.tensor存储的图像维度为(通道、宽、高)【C,W,H】,在使用过程中要根据具体使用需求对图像矩阵进行维度转换。

import numpy as np
from PIL import Image
from torchvision import transformsimg_path = r'F:\pytorch_project\plane.jpg'image = Image.open(img_path).convert('RGB')# image变成numpy.ndarray
img_np = np.array(image)
# image变成torch.tensor
img_tensor = transforms.ToTensor()(image)print("numpy.array shape: {}".format(img_np.shape))
print("torch.tensor shape: {}".format(img_tensor.shape))###
numpy.array shape: (1200, 1920, 3)
torch.tensor shape: torch.Size([3, 1200, 1920])

四、RGB各通道图像提取

对RGB各图层图像提取并展示有利于更直观了解图像的情况。

import numpy as np
from PIL import Image
import matplotlib.pyplot as pltimg_path = r'F:\pytorch_project\plane.jpg'# 获取图像数据
image = Image.open(img_path).convert('RGB')
img = np.array(image)img_list = []# 获取各通道图层数据
for i in range(img.shape[-1]):temp = np.zeros_like(img)temp[...,i] = img[:,:,i]img_list.append(temp)# 图像展示
fig,axes = plt.subplots(1,3)
titles = ['the image of {} channel'.format(channel) for channel in ['R','G','B']]for i in range(len(img_list)):axes[i].imshow(img_list[i])axes[i].set_title(titles[i])plt.show()

在这里插入图片描述

http://www.wangmingla.cn/news/60750.html

相关文章:

  • 不用写代码做网站软件故事式软文范例100字
  • 模板网站可以做优化阿里指数查询官网
  • 如何给网站做后台百度seo新规则
  • 中华人民共和国城乡和住房建设部网站网络竞价托管公司
  • 网站主办者有效证件电子件一个网站推广
  • 网站建设推广公司现在百度推广有用吗
  • 可以做线路板网站的背景图沈阳网页建站模板
  • 双城网站建设哪家好搜索引擎优化公司排行
  • 橙子建站是什么平台骗人吗网络热词2021流行语
  • wordpress提高访问速度seo工程师招聘
  • 建设银行网站 开户行怎么查软文推广营销
  • 食品网站制作百度网页版进入
  • 在线作图网网站的推广优化
  • 做网站中二级导航链接到一级导航广州seo快速排名
  • 网上兼职做药师有哪些网站一个产品的宣传和推广方案
  • 网站获取访客qq 原理品牌推广工作内容
  • 迷你世界怎么做网站期百度搜索热度
  • 怎样做网站结构优化百度云搜索引擎官方入口
  • 新疆乌鲁木齐做网站百度seo排名点击软件
  • 许昌网站开发哪家好关键词优化是什么意思?
  • 十大在线客服系统排名站长工具seo综合查询访问
  • 做网站在自己电脑建立虚拟机国际新闻 军事
  • 建设网站简单的需要多少天网络营销有哪些内容
  • 大兴黄村网站建设公司2023新闻热点摘抄
  • 网站不备案能访问吗百度热搜关键词排名
  • 邯郸市城市建设局网站人员优化是什么意思
  • 响应式旅行社展业网站开发调研报告免费引流在线推广
  • 济南济阳哪有做网站的陕西百度推广的代理商
  • wordpress管理员登入上海网络优化服务
  • 个人网站怎么建立常见搜索引擎有哪些