OpenCV快速入门——基础知识(上)

OpenCV入门基础知识

1.图片读取
import cv2 #导入opencv工具包

print(cv2.getVersionString()) #查看opencv版本号

image = cv2.imread("opencv_logo.jpg") #cv2.imread()读取图片,图片可以用绝对定位,但不能用'\',其他的'/'或'//','\\'都可以,也可以用相对定位。
print(image.shape) #shape取维度(250,250,3),这里的250和250是像素的横行和纵列,3是图片的彩色通道


cv2.imshow("image", image) #将图片显示到窗口,第一个参数是窗口名,第二个是要显示的图片,图片瞬间显示并消失。
cv2.waitKey() #会让窗口暂停,在窗口上输入任意键结束。

在这里插入图片描述

2.RGB彩色通道

R:Red
G:Green
B:Blue
存储一张彩色图片等同于存储三张灰度图。
灰度范围是0——255
三颜色通道
OpenCV对颜色的储存顺序是BGR,与常见的RGB顺序刚好相反。
在这里插入图片描述

import cv2

image = cv2.imread("opencv_logo.jpg")
#提取三张灰度图
cv2.imshow("blue", image[:, :, 0])
cv2.imshow("green", image[:, :, 1])
cv2.imshow("red", image[:, :, 2])
#彩色图像的灰度算法,将彩图转化为灰度图,大量图片的算法都是采用灰度图的
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)

cv2.waitKey()

一张彩图,被分成三张灰度图,与上面的一致。
在这里插入图片描述
下方是该图像转化的灰度图
在这里插入图片描述

3.区域裁剪

对图像的部分区域进行裁剪

import cv2
image = cv2.imread("opencv_logo.jpg")
#可以用索引号取出图像的一部分
crop = image[10:170, 40:200]

cv2.imshow("crop", crop)
cv2.waitKey()

在这里插入图片描述

这里的10:100是横行,指的是从第10行到第100行
同理40:200是纵列,从40列到200列。

4. 绘制图片和文字
import cv2
import numpy as np
#用numpy创建一个画布,300x300的黑色画布
image = np.zeros([300, 300, 3], dtype=np.uint8)

cv2.line(image, (100, 200), (250, 250), (255, 0, 0), 2) #第一个参数是画布,第二个是线的起始点,第三个是线的终点,第四个是线条的颜色,第五个是粗细(像素)
cv2.rectangle(image, (30, 100), (60, 150), (0, 255, 0), 2) #这是一个矩形,第一个是顶点坐标,第二个对角坐标,第三个是颜色,第五个是粗细(像素)
cv2.circle(image, (150, 100), 20, (0, 0, 255), 3) #圆
cv2.putText(image, "hello", (100, 50), 0, 1, (255, 255, 255), 2, 1)
#putText可以绘制字符串,第二个是“内容”
cv2.imshow("image", image)0为字体序号,第一个1是缩放系数,2为粗细2个像素,第二个1是线条类型
cv2.waitKey()

在这里插入图在这里插入图片描述
片描述

OpenCV绘制的转角细节不够清楚。

5.均值滤波

均值滤波器用于处理图像的噪点。

import cv2

image = cv2.imread("plane.jpg")

gauss = cv2.GaussianBlur(image, (5, 5), 0) #高斯滤波器,高斯内核为(5,5)
median = cv2.medianBlur(image, 5) #中值滤波器

cv2.imshow("image", image)
cv2.imshow("gauss", gauss)
cv2.imshow("median", median)

cv2.waitKey()

高斯滤波器和原图片对比,噪音点减少。但图像更加模糊了。在这里插入图片描述
可以看出来,通过中值滤波器的图片噪点明显减少了,但图片也更加模糊了,但现实中一班不会用噪点这么严重的图片。在这里插入图片描述
使用均值滤波把噪点消除,方便后面的图像处理操作。

6.特征提取
import cv2

image = cv2.imread("opencv_logo.jpg")
#把彩色图像转化为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#goodFeaturesToTrack获取图像中的特征点,最多返回500个点,点的质量优于0.1,特征点之间的距离大于10个像素。
corners = cv2.goodFeaturesToTrack(gray, 500, 0.1, 10)
#标记特征点
for corner in corners:
    x, y = corner.ravel()
    cv2.circle(image, (int(x), int(y)), 3, (255, 0, 255), -1)

cv2.imshow("corners", image)
cv2.waitKey()

在这里插入图片描述
识别出来的特征几乎都是图像的转角。
转角是一种最简单的图像特征。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值