【OpenCV-系列2】02 图像基本操作(点操作)


  目标掌握图像的读取和保存方法
  访问图像的像素
  在图像上绘制集合图像
  获取图像属性,并实现通道的合并、分离
  颜色空间变换

1 图像的IO操作

1.1 读取图像

  API: cv.imread()
  参数:
    (1)图片路径
    (2)读取方式的标志
      cv.IMREAD_COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略,这是默认参数(该参数值可以用1代替)
      cv.IMREAD_ GRAYSCALE:以灰度模式加载图像(该参数值可以用0代替)
      cv.IMREAD_UNCHANGED:彩色模式加载图像,并包含alpha通道的加载图像。(该参数值可以用-1代替)

import cv2
#以灰度图的形式读取图像
img=cv2.imread('test.png',0)

#以彩色图的形式读取图像
img2=cv2.imread('test.png',1)

#
img3=cv2.imread('test.png',-1)

1.2 显示图像

  API: cv.imshow()
  参数:
    (1)显示窗口名称,以字符串类型表示
    (2)图像路径
  注意: 在调用显示图像API后,要调用cv.waitKey()给图像绘制留下时间,否者窗口会出现无响应情况,并且图像无法显示出来。

import cv2
import matplotlib as plt

#(1)以彩色图的形式读取图像
img2=cv2.imread('test.png',1)

#(2)显示图像
##2.1 opencv中的显示——BGR形式显示的
cv2.imshow('image2',img2)
cv2.waitKey(0)#一直显示
##2.2 matplotlib显示——RGB形式显示

1.3 保存图像

  API: cv.imwrite()
  参数:
    (1)图片路径
    (2)图像

import cv2
import matplotlib as plt

#(1)以彩色图的形式读取图像
img2=cv2.imread('test.png',1)

#(2)显示图像
##2.1 opencv中的显示——BGR形式显示的
cv2.imshow('image2',img2)
cv2.waitKey(0)#一直显示
##2.2 matplotlib显示——RGB形式显示

#(3)保存图像
cv2.imwrite('test_imwrite.jpg',img2)

2 绘制几何图形

2.1 绘制直线

  API: cv.line(image,start,end,color,thickness)
  参数:
    (1)img要绘制的图像
    (2)start/end直线的起点和终点
    (3)color线条的颜色
    (4)Thickness线条宽度

import cv2
import matplotlib.pyplot as plt
import numpy as np

#1.创建图像
img=np.zeros((512,512,3),np.uint8)

#2.绘制图形
cv2.line(img,(0,0),(511,511),(255,0,0),5)

#3.显示图像
plt.imshow(img[:,:,::-1])
plt.show()

在这里插入图片描述

2.2 绘制圆形

  API: cv.circle(img,centerpoint,r,color,thickness)
  参数:
    (1)img要绘制的图像
    (2)centerpoint圆形中心点
    (3)r圆形半径
    (4)color线条的颜色
    (5)Thickness线条宽度

import cv2
import matplotlib.pyplot as plt
import numpy as np

#1.创建图像
img=np.zeros((512,512,3),np.uint8)

#2.绘制图形
cv2.line(img,(0,0),(511,511),(255,0,0),5)#直线
cv2.circle(img,(256,256),60,(0,0,255),-1)#圆形

#3.显示图像
plt.imshow(img[:,:,::-1])
plt.show()

在这里插入图片描述

2.3 绘制矩形

  API: cv.rectangle(img,leftupper,rightdown,color,thickness)
  参数:
    (1)img要绘制的图像
    (2)leftupper左上角坐标
    (3)rightdown右下角坐标
    (4)color线条的颜色
    (5)Thickness线条宽度

import cv2
import matplotlib.pyplot as plt
import numpy as np

#1.创建图像
img=np.zeros((512,512,3),np.uint8)

#2.绘制图形
cv2.line(img,(0,0),(511,511),(255,0,0),5)#直线
cv2.circle(img,(256,256),60,(0,0,255),-1)#圆形
cv2.rectangle(img,(100,100),(400,400),(0,255,0),5)#矩形

#3.显示图像
plt.imshow(img[:,:,::-1])
plt.show()

在这里插入图片描述

2.4 向图像中添加文字

  API: cv.putText(img,text,station,font,fontsize,color,thickness,cv.LINE_AA)
  参数:
    (1)img要绘制的图像
    (2)test要写入的文本
    (3)station文本放置的位置
    (4)font字体
    (5)Fontsize字体大小
    (4)color线条的颜色
    (5)Thickness线条宽度

import cv2
import matplotlib.pyplot as plt
import numpy as np

#1.创建图像
img=np.zeros((512,512,3),np.uint8)

#2.绘制图形
cv2.line(img,(0,0),(511,511),(255,0,0),5)#直线
cv2.circle(img,(256,256),60,(0,0,255),-1)#圆形
cv2.rectangle(img,(100,100),(400,400),(0,255,0),5)#矩形
cv2.putText(img,'hello',(100,150),
            cv2.FONT_HERSHEY_COMPLEX,
            5,(255,255,255,3))#写文字
#3.显示图像
plt.imshow(img[:,:,::-1])
plt.show()

在这里插入图片描述

3 获取并修改图像中的像素点

  通过行和列的坐标值获取该像素点的像素值,对于BGR图像,返回一个蓝,绿,红的值的数组。对于灰度图像,仅返回响应的强度值。

import numpy as np
img=np.zeros((512,512,3),np.uint8)
print(img[100,100])
img[100,100]=(0,0,255)
print(img[100,100])

4 获取图像属性

  图像属性包括:行数、列数和通道数,图像数据类型,像素等。
在这里插入图片描述

import cv2
import matplotlib.pyplot as plt
import numpy as np

img=np.zeros((255,255,3),np.uint8)

print(img.shape)#形状
print(img.size)#大小
print(img.dtype)#类型

5 图像通道的拆分与合并

  有时候需要在B,G,R通道上单独工作,在这种情况下,需要将三种通道分割为单个通道,或者将单独的通道合并到BGR图像。
  通道拆分API: b,g,r=cv.split(img)
  通道合并API: img=cv.merge((b,g,r))

import cv2
import matplotlib.pyplot as plt
import numpy as np
img=cv2.imread('test.png')
#通道拆分
b,g,r=cv2.split(img)
plt.imshow(b,cmap=plt.cm.gray)#灰度
#通道合并
img2=cv2.merge((b,g,r))
plt.imshow(img2[:,:,::-1])

6 色彩空间的改变

  最常用的色彩空间转换方法有两种,BGR_GRAY、BGR_HSV
  API: cv.cvtColor(input_img,flag)
  参数:
    (1)input_img进行色彩空间转换的图像
    (2)flag:转换类型
      cv.COLOR_BGR2GRAY
      cv.COLOR_BGR2HSV

import cv2
import matplotlib.pyplot as plt
import numpy as np
img=cv2.imread('test.png')
#转换为HSV色彩空间
img=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#转换为GRAY色彩空间
img2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('secaikongjianzhuanhuan',img)
cv2.waitKey(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值