基于2023年网络赛赛题了解OpenCv

一、OpenCv图像读取与显示

1.图像的读取与显示

cv.imread()

图像读取,第一个参数是照片的位置一般是完整路径,第二个参数是指定图片输出的样式

  • cv.IMREAD_COLOR: 加载彩色图像。任何图像的透明度都会被忽视。(默认模式)。
  • cv.IMREAD_GRAYSCALE:以灰度模式加载图像
  • cv.IMREAD_UNCHANGED:加载图像,包括alpha通道

cv.imshow()

使用 "cv.imshow"将读入进去的图片展示出来,照片随窗口大小改变。第一个参数是窗口名称,是一个字符创,第二个参数是我们展示的对象

cv2.wait()

cv2.wait是OpenCV库中的一个函数,用于等待用户按键输入。它的参数是一个整数,表示等待键盘输入的时间(以毫秒为单位)。如果在这个时间内用户按下了任意键,函数将返回按下的键的ASCII码;如果在指定的时间内没有按键输入,函数将返回-1。输入0表示窗口一直打开,知道按下任意键。

cv2.destoryAllWindows():是 OpenCV 库中的一个函数,用于关闭所有由 cv2.imshow(), cv2.namedWindow(), cv2.createWindow() 等函数创建的窗口

二、图片颜色的转变

图片灰度

1.在读取图片的时候可以直接将图片进行灰度

python 复制代码
import cv2

img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

2.调用cvtColor函数将图片进行灰度

python 复制代码
import cv2

img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

图像尺寸改变

cv.resize()

第一个参数是图片名字,第二个参数是想要调整的长和宽

python 复制代码
import cv2

# 读取图像
image = cv2.imread('input_image.jpg')

# 设置新的图像尺寸
new_width = 500
new_height = 300

# 调整图像尺寸
resized_image = cv2.resize(image, (new_width, new_height))

# 显示原始图像和调整后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Resized Image', resized_image)

# 等待按键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

图片裁剪以裁剪左边保留右边图像为例

python 复制代码
#"D:\abcd\task3.jpg"
import cv2

# 读取图像
image = cv2.imread("D:/abcd/task3.jpg")

# 获取图像的宽度和高度
height, width = image.shape[:2]

# 设置裁剪区域的左上角坐标和宽高
x = width // 2  # 将图像分为左右两部分,取中间位置作为分割点
y = 0
width = width - x  # 裁剪宽度为原图宽度减去左侧部分的宽度
height = height

# 裁剪图像
cropped_image = image[y:y+height, x:x+width]

# 显示原始图像和裁剪后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Cropped Image', cropped_image)

# 等待按键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

# 保存裁剪后的图像
cv2.imwrite('output_image.jpg', cropped_image)

OpenCv的模版匹配

模版匹配就是在大图像中找小图像然后在大图像中将小图像给圈出来

基本原理就是通过滑动模板图像(template)在源图像(source)上,计算每个位置的匹配得分,从而找到最匹配的位置。

在opencv中模版匹配一般是由matchTemplate来实现的

python 复制代码
result = cv2.matchTemplate(image, template, method)
  • image: 源图像(在其中搜索匹配区域)。
  • template: 模板图像(需要匹配的图像部分)。
  • method: 匹配方法,常用的方法有:
    • cv2.TM_SQDIFF: 平方差匹配。
    • cv2.TM_SQDIFF_NORMED: 归一化平方差匹配。
    • cv2.TM_CCORR: 相关匹配。
    • cv2.TM_CCORR_NORMED: 归一化相关匹配。
    • cv2.TM_CCOEFF: 相关系数匹配。
    • cv2.TM_CCOEFF_NORMED: 归一化相关系数匹配。
python 复制代码
# 导入相关库
import cv2
import numpy as np

# 读取原始图像和模版图像
image = cv2.imread("D:/abcd/image.png", cv2.IMREAD_COLOR)
template = cv2.imread("D:/abcd/template.png", cv2.IMREAD_COLOR)

# 用cv2.matchTemplate进行模版匹配
result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)

# 获取最佳的匹配位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + template.shape[1], top_left[1] + template.shape[0])

# 在原始图片上绘制矩形框来标记匹配的位置,(0,255,0)是矩形框的颜色
cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)

# 显示结果并保持
cv2.imshow('Matched Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('result.jpg', image)

参考文献:OpenCV 的模板匹配_opencv 模板匹配-CSDN博客

相关推荐
微凉的衣柜3 分钟前
Meta AI 推出机器人开源项目:推动触觉感知和人机交互的前沿研究
人工智能·机器人·人机交互
袁牛逼7 分钟前
ai外呼机器人的作用有哪些?
人工智能·机器人
冷凝女子8 分钟前
【QT】海康视频及openCv抓拍正脸接口
qt·opencv·音视频·海康
BSV区块链18 分钟前
如何在BSV区块链上实现可验证AI
人工智能·区块链
武子康34 分钟前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
deephub35 分钟前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
Q81375746041 分钟前
数据挖掘在金融交易中的应用:民锋科技的智能化布局
人工智能·科技·数据挖掘
qzhqbb1 小时前
语言模型的采样方法
人工智能·语言模型·自然语言处理
qzhqbb1 小时前
基于 Transformer 的语言模型
人工智能·语言模型·自然语言处理·transformer
___Dream1 小时前
【CTFN】基于耦合翻译融合网络的多模态情感分析的层次学习
人工智能·深度学习·机器学习·transformer·人机交互