[图像识别]2.OpenCV基础操作

目录

1.图像导入与导出

图像导入

图像显示

图像导出

 2.绘制几何图形

 3.获取和修改像素点

 4.获取图像属性

5.图像通道的拆分与合并

6.色彩空间的改变

总结 ,这节课你学到了什么


首先导入opencv库

import cv2

可以使用as来修改名称

import 库名称 as 自定义名称

例如

import cv2 as cv

1.图像导入与导出

图像导入

图像变量=cv2.imread("图片路径名",参数1)

图片路径名:

直接图片名称,记得将图片放在主函数同一文件夹下

如果不在同一文件夹下,也可以通过相对位置例如“../../1.jpg”的方式导入

注:如果路径有错误不会报错,会返回一个None

参数1:

  • IMREAD_UNCHANDED(<0) alpha通道加载图像
  • IMREAD_GRAYSCALE(0) 表示吧原图作为灰度图像加载进来
  • IMREAD_COLOR(>0) 彩色模式加载图像

 默认加载时是加载BGR图像(即每个像素点用三个变量表示,B Bule蓝色,G Green绿色,R Red红色)

#1.1

import cv2
pic=cv2.imread('1.jpg')
print(pic[0,0])#(0,0,)坐标像素打印BGR颜色值
cv2.imshow("image",pic)
cv2.waitKey(0)#暂停

imread函数中参数1 讨论:

 (1)将上面1.1代码第2行换成

pic=cv2.imread('1.jpg',0)

 

 (2)将上面1.1代码第2行换成

pic=cv2.imread('1.jpg',1)
pic=cv2.imread('1.jpg',-1)

 和默认一样

小拓展:最简单灰度L图像转变成假彩色原理(略)

opencv中有函数cvtColor()

图像显示

cv2.imshow("窗口名",图像变量)

这个函数也是以BGR模式显示图像,即显示原图

但是如果用matplotlib.pyplot.imshow()函数是以RGB模式显示,需要转换

 python基本语法[]和:组合截取图像

#1.2

import cv2
pic=cv2.imread('1.jpg')
cv2.imshow("RGB",pic[0:100,0:500,::-1])#翻转通道,使得成为RGB通道,但cv2.imshow()显示是BGR模式(plt显示是RGB),会使图片的B与R通道值交换,颜色变化
cv2.imshow("BGR",pic[0:100,0:500])
cv2.waitKey(0)

结果:

 可以看出,坐标系原点在图片左上角,[]中第一个参数代表高度,第二个代表宽度,第三个代表颜色通道(0B,1G,2R)

图像导出

cv2.imwrite("图像路径名",图像变量)

#1.3

import cv2
pic=cv2.imread('1.jpg')
cv2.imwrite("save.jpg",pic)
cv2.waitKey(0)

结果:

 2.绘制几何图形

绘制直线

cv2.line(img,start,end,color,thickness)

img:图像变量

start,end:直线起始,终点

color:颜色

thickness:宽度

 绘制圆形

cv2.circle(img,centerpoint,r,color,thickness)

centerpoint:圆心

r:半径

绘制矩形

cv2.rectangle(img,leftupper,rightdown,thickness)

leftupper:左上角坐标

rightdown:右下角坐标

添加文字

cv2.putText(img,text,station,font,fontsize,color,thickness)

text:文本

station:位置

font:字体

fontsize:字体大小

举例:

#1.4

import cv2
import numpy as np
pic=np.zeros((600,600,3),np.uint8)#创建空白图像
cv2.line(pic,(0,0),(100,100),(50,255,6),5)#划线
cv2.circle(pic,(100,100),50,(255,255,255),1)#划圆
cv2.rectangle(pic,(200,200),(400,400),(66,55,255),10)#划矩形
cv2.putText(pic,"Hellow",(0,400),1,10,(255,0,1),1)
cv2.imshow("image",pic[:,:,::-1])#RGB模式显示
cv2.waitKey(0)

 

 3.获取和修改像素点

RGB图像像素点是个RGB三元数组,灰度图像像素点是灰度值

img[x,y,c]=color

img:图像变量

x:x坐标值,可以用:,例如100:200获取100到200的x坐标

y:y坐标值,可以用:,例如100:200获取100到200的y坐标

c:颜色通道,不写为BGR模式,0索引B,1索引G,2索引R,可以用:

color:修改的颜色

#1.5

import cv2 as cv

pic = cv.imread("1.jpg")
px=pic[100,100]#(100,100)位置点三通道像素
print(px)
pxBlue=pic[100,100,0]#0索引通道即B蓝色通道数值
print(pxBlue)
#修改像素值
pic[100:200, 100:200]=(255, 255, 255)
cv.imshow("image", pic[:, :, ::-1])  # RGB模式显示
cv.waitKey(0)

结果

 4.获取图像属性

 #1.6

import cv2 as cv

pic = cv.imread("1.jpg")
print(pic.shape)
print(pic.size)
print(pic.dtype)
cv.waitKey(0)

5.图像通道的拆分与合并

图像拆分

b,g,r=cv2.split(img)

图像合并

img=cv2.merge((b,g,r))

举例

#1.7

import cv2 as cv
import numpy as np

pic = cv.imread("1.jpg")
b, g, r = cv.split(pic)#拆分BGR
pic2 = cv.merge((g, b, r))#以GBR模式组合
cv.imshow("rgb",pic)
cv.imshow("gbr",pic2)
cv.waitKey(0)

结果

6.色彩空间的改变

cv2.cvtColor(img,flag)

flag:

cv2.COLOR_BGR2GRAY   BGR与GRAY转换

cv2.COLOR_BGR2HSV   BGR与HSV转换

 #1.8

import cv2 as cv

pic = cv.imread("1.jpg")

pic1=cv.cvtColor(pic, cv.COLOR_BGR2GRAY)
pic2=cv.cvtColor(pic, cv.COLOR_BGR2HSV)
cv.imshow("GRAY", pic1)
cv.imshow("HSV", pic2)
cv.waitKey(0)

结果

总结 ,这节课你学到了什么

import 库名称 as 自定义名称

图像变量=cv2.imread("图片路径名",参数1)

cv2.imshow("窗口名",图像变量)

cv2.imwrite("图像路径名",图像变量)

cv2.line(img,start,end,color,thickness)

cv2.circle(img,centerpoint,r,color,thickness)

cv2.rectangle(img,leftupper,rightdown,thickness)

cv2.putText(img,text,station,font,fontsize,color,thickness)

img[x,y,c]=color

print(pic.shape)
print(pic.size)
print(pic.dtype)

b,g,r=cv2.split(img)

img=cv2.merge((b,g,r))

cv2.cvtColor(img,flag)

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ζั͡ ั͡雾 ั͡狼 ั͡✾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值