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

东莞长安 网站建设优化公司网站

东莞长安 网站建设,优化公司网站,赤峰做网站,天津 网站备案图像基本操作 5. 图像基本操作5.1 访问像素值并修改5.2 访问图像属性5.2 图像感兴趣区域ROI5.3 拆分和合并图像通道5.4 为图像设置边框(填充) 5. 图像基本操作 访问像素值并修改访问图像属性设置感兴趣区域(ROI)分割和合并图像 …

图像基本操作

    • 5. 图像基本操作
      • 5.1 访问像素值并修改
      • 5.2 访问图像属性
      • 5.2 图像感兴趣区域ROI
      • 5.3 拆分和合并图像通道
      • 5.4 为图像设置边框(填充)

5. 图像基本操作

  • 访问像素值并修改
  • 访问图像属性
  • 设置感兴趣区域(ROI)
  • 分割和合并图像

5.1 访问像素值并修改

访问像素值

import cv2# 读取图像
# img——>(h, w, c),c为通道数
img = cv2.imread('lena.jpg')# 访问像素值
px = img[100, 100]
print("像素值:", px)
# img——>(b, g, r)
# 蓝色像素值——>对应通道b
blue = img[100, 100, 0]
print("蓝色像素值:", blue)

请添加图片描述

修改像素值

img[100, 100] = [255,255,255]
print(img[100,100])

请添加图片描述
简单访问每个像素值并修改比较缓慢,一般不使用。

Numpy数组方法array.item()array.itemset()被认为更好,但是它们始终返回标量。

更好的像素访问和编辑方法:

# 访问蓝色像素值
print(img.item(100, 100, 0))# 修改蓝色像素值
img.itemset((100,100,0), 255)

请添加图片描述

修改B通道像素值为255,区间[200:400, 200:400]

import cv2# 读取图像
# img——>(h, w, c),c为通道数
img = cv2.imread('lena.jpg')# 修改B通道像素值为255,区间[200:400, 200:400]
for i in range(200, 400):for j in range(200, 400):img.itemset((i, j, 0), 255)# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

5.2 访问图像属性

属性属性包括行数、列数和通道数,图像数据类型,像素数等。

import cv2# 读取图像
# img——>(h, w, c),c为通道数
img = cv2.imread('lena.jpg')# 图像形状
print('图像形状', img.shape)
# 像素总数
print('像素总数', img.size)# 图像数据类型
print('图像数据类型', img.dtype)

请添加图片描述

5.2 图像感兴趣区域ROI

对于人物图像,我们感兴趣的一般是人脸区域。使用Numpy索引再次获得ROI,并将脸复制到图像中的另一个区域:

import cv2# 读取图像
img = cv2.imread('lena.jpg')# 获取脸的区域
face = img[200:400, 200:400]# 将脸复制到另一区域
img[200:400, 0:200] = face# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

5.3 拆分和合并图像通道

将图像的通道进行分离,并分开展示。同时实现OpenCV在一个窗口显示多张图像。

import cv2
import numpy as np# 读取图像
img = cv2.imread('lena.jpg')# 分离通道
b, g, r = cv2.split(img)# 合并通道
img_m = cv2.merge((b, g, r))# 改变各通道图像的尺寸
b = cv2.resize(b, (200, 200))
g = cv2.resize(g, (200, 200))
r = cv2.resize(r, (200, 200))
img = cv2.resize(img, (200, 200))# 将单通道图像转换为3通道
b = cv2.cvtColor(b, cv2.COLOR_GRAY2RGB)
g = cv2.cvtColor(g, cv2.COLOR_GRAY2RGB)
r = cv2.cvtColor(r, cv2.COLOR_GRAY2RGB)# 同一窗口显示多张图像
# 拼接需要图像的形状及通道一样
hmerge = np.hstack((b, g, r, img)) # 水平拼接
vmerge = np.vstack((b, g, r)) # 垂直拼接# 显示图像
cv2.imshow('image', hmerge)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

5.4 为图像设置边框(填充)

cv2.copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None)函数在卷积运算,零填充等方面有很多应用。

  • src:输入图像

  • top,bottom,left,right:边界宽度(以相应方向上的像素数为单位)

  • borderType:定义要添加哪种边框的标志,可以是以下类型

    • cv2.BORDER_CONSTANT :添加恒定的彩色边框
    • cv2.BORDER_REFLECT : 边框将是边框元素的镜像
    • cv2.BORDER_REPLICATE:最后一个元素被复制
    • cv2.BORDER_WRAP:包裹
  • dst:目标图像

  • value:边框的颜色

import cv2
import numpy as np# 读取图像
img = cv2.imread('lena.jpg')
img = cv2.resize(img, (200, 200))# 设置边框
constant = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_CONSTANT)
reflect = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_REFLECT)
replicate = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_REPLICATE)
wrap = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_WRAP)# 图像拼接,水平
hmerge = np.hstack((constant, reflect, replicate, wrap)) # 水平拼接# 显示图像
cv2.imshow('image', hmerge)
cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

http://www.yayakq.cn/news/573188/

相关文章:

  • 众筹网站功能网站百度快照怎么做
  • 做网站公司叫什么wordpress解密主题
  • 电脑上做网站myeclipse怎样做网站
  • 有什么图片做视频的网站吗50款app软件免费下载
  • 网站建设进度规划网站建设用什么语言开发
  • 苏州做网站推广的公司哪家好微商城网站建设策划方案
  • 专门帮做ppt的网站西安网约车驾驶员资格证网上报名
  • 惠州网站建设模板怎么打击对手网站排名
  • 宁波网站建设高端简述网站建设的步骤
  • 无锡做网站哪家公司好在哪里可以做自己的网站
  • 济南网站设计公司富显示海外地址用什么地图?
  • 给网站添加后台公司网站制作税目
  • 怎么制作网站栏目页主页深圳响应式网站
  • 无锡个人网站建设最新网络游戏排行榜2021前十名
  • 网站编辑工作内容高端品牌车有哪些
  • 网站推广怎么弄有特色的企业网站
  • 网站建设工程师工资金华公司做网站
  • 部队网站建设做网站先做前台还是后台
  • 模板王网站官网公众平台的微信网站开发
  • 合肥建立网站wordpress 阿里百秀主题
  • 荆州做网站做门名片设计网站
  • 制作企业网站页面代码摄影 开课吧wordpress 固定链接插件
  • 河北网站建设备案深圳市建设工程交易服务中心宝安分中心
  • wap网站在线生成app莱芜要出大事
  • 网站建设推广方案策划书大一网页设计期末作业
  • 简述网站的建设步骤网站访问量怎么增加
  • 郑州网站建设qicaizz曲阜网站建设价格
  • 建设网站的步骤加强网站集约化建设
  • 网站title标点改动 影响客户关系管理案例10个
  • 贸易公司网站模板建设银行网站无法打开