OpenCV学习3-图像的基本操作

# -*- coding: utf-8 -*-
"""
图像的基本操作
"""
import numpy as np
import cv2 as cv

#从文件读取图像
img = cv.imread('timg.jpg',1)

#可以根据像素的行和列的坐标获取他的像素值。对 BGR 图像而言,返回值为 B,G,R 的值。
img[100,100]
#array([255,209,88], dtype=uint8),行100列100的像素值,蓝色 255,绿色 209,红色 88

#单独将行100列100点的像素值,蓝色通道提取出来
blue = img[100,100,0]
#>>> blue
#255

#将行100列100点的像素值,绿色通道提取出来
green = img[100,100,1]
#>>> green
#209

#将行100列100点的像素值修改成白色255,255,255,。
img[100,100]=[255,255,255]

#获取行100列100点的像素值,B通道
img.item(100,100,0)
#255

#将行100列100点的像素值,B通道值改为100
img.itemset((100,100,0),100)
img.item(100,100,0)
#100

#获取图像基本属性
img.shape
#(360, 540, 3) 360行,540列,3个颜色通道

#获取图像像素数目
img.size
#583200 360*540*3=583200

'''
有时你需要对一幅图像的特定区域进行操作。例如我们要检测一副图像中眼睛的位置,我们首先应该在图像中找到脸,
再在脸的区域中找眼睛,而不是直接在一幅图像中搜索。这样会提高程序的准确性和性能。
ROI 也是使用 Numpy 索引来获得的。现在我们选择图像的部分并把他拷贝到图像的其他区域。'''

img=cv.imread('timg.jpg')

#取行100到250,列185到300的图像矩形像素
block=img[100:250,185:300]
#>>> block.shape 查看矩形像素基本属性
#(150, 115, 3)

#在左上角坐标185:100,右下角坐标300:250,画个线宽为2的绿色矩形框。
cv.rectangle(img,(185,100),(300,250),(0,255,0),2)

#把block覆盖到img图像上,位置行0-150,列0-115
img[0:150,0:115]=block

#显示图像窗口
cv.imshow('image',img)
cv.waitKey(10)
#销毁图像窗口
cv.destroyAllWindows()


'''拆分及合并图像通道'''

#将整个图片的BGR通道分离
b,g,r = cv.split(img) # 将图像的蓝、绿、红通道分离

#重新合成
img2=cv.merge([b,g,r])

#或者用切片的方式分离B通道
b=img[:,:,0]

#假如你想使所有像素的红色通道值都为 0,你不必先拆分再赋值。你可以直接使用 Numpy 索引,这会更快。
img[:,:,2]=0

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值