OpenCV-Python快速入门(二):图像基础

前言

  • 本文是个人快速入门OpenCV-Python的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入
    OpenCV-Python快速入门
    专栏或我的个人主页查看

前提条件

实验环境

  • Python 3.x (面向对象的高级语言)
  • OpenCV 4.0(python第三方库)pip3 install opencv-python

图像基础

二值图像、灰度图像、彩色图像

  • 二值图像是指仅仅包含黑色(0)和白色(1)两种颜色的图像。
  • 灰度图像又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶,即256 个灰度级,用数值区间[0, 255]来表示。其中,数值“255”表示纯白色,数值“0”表示纯黑色,其余的数值表示从纯白到纯黑之间不同级别的灰度。
  • 彩色图像是指每个像素由R、G、B分量构成的图像,其中R、G、B是由不同的灰度级来描述的。
    在这里插入图片描述

修改灰度图像素

import cv2
img=cv2.imread("1.jpg",0)
cv2.imshow("origin",img)
for i in range(10,100):
    for j in range(80,100):
        img[i,j]=255
cv2.imshow("alter",img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

修改彩色图像素

import cv2
img=cv2.imread("1.jpg")
cv2.imshow("origin",img)
# 访问 img 中第 0 行第 0 列位置上的 B 通道、G 通道、R 通道三个像素点
print("访问 img[0,0]=",img[0,0])
# 访问 img 中第 0 行第 0 列位置上的 B 通道
print("访问 img[0,0,0]=",img[0,0,0])
# 访问 img 中第 0 行第 0 列位置上的 G 通道
print("访问 img[0,0,1]=",img[0,0,1])
# 访问 img 中第 0 行第 0 列位置上的 R 通道
print("访问 img[0,0,2]=",img[0,0,2])
#修改指定位置为黑色区域
for i in range(0,50):
    for j in range(0,100):
        for k in range(0,3):
            img[i,j,k]=0 #黑色
#修改指定位置为绿色区域
for i in range(50,100):
    for j in range(0,100):
        img[i,j]=[0,255,0] #绿色
#修改指定位置为白色区域
for i in range(100,150):
    for j in range(0,100):
        img[i,j]=255 # 白色
cv2.imshow("alter",img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

Numpy处理像素

import numpy as np
import cv2
# 随机生成一幅 400×400 大小的灰度图像
img=np.random.randint(0,256,size=[400,400],dtype=np.uint8)
print(img)
print(img.shape)
cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

import cv2
import numpy as np
# 随机生成一幅 256×256×3 的彩色图像
img=np.random.randint(0,256,size=[400,400,3],dtype=np.uint8)
cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

感兴趣区域ROI

import cv2
img=cv2.imread("3.jpg")\
# 取原图像高68像素到450像素,宽取30像素到450像素
cat=img[20:450,68:450] # ROI
cv2.imshow("origin",img)
cv2.imshow("cat",cat)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

通道拆分

import cv2
img=cv2.imread("1.jpg")
b,g,r=cv2.split(img)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
# 或者
# b=img[:,:,0]
# g=img[:,:,1]
# r=img[:,:,2]
# cv2.imshow("B",b)
# cv2.imshow("G",g)
# cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

通道合并

import cv2
img=cv2.imread("1.jpg")
b,g,r=cv2.split(img)
BGR=cv2.merge([b,g,r])
RGB=cv2.merge([r,g,b])
cv2.imshow("img",img)
cv2.imshow("BGR",BGR)
cv2.imshow("RGB",RGB)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

注意:OpenCV是以BGR模式的三维数组形式存储

图像属性

import cv2
img=cv2.imread("1.jpg")
img_gray=cv2.imread("1.jpg",0)
print("彩色图像属性:")
print("img.shape=",img.shape)
print("img.size=",img.size)
print("img.dtype=",img.dtype)
print("灰度图像属性:")
print("img_gray.shape=",img_gray.shape)
print("img_gray.size=",img_gray.size)
print("img_gray.dtype=",img_gray.dtype)

在这里插入图片描述

参考文献

[1] https://opencv.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FriendshipT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值