基于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博客

相关推荐
数字化顾问6 小时前
(103页PPT)产业园区智能化规划设计方案(附下载方式)
大数据·人工智能
愚公搬代码6 小时前
【愚公系列】《扣子开发 AI Agent 智能体应用》029-实战案例:自动生成 PPT的智能办公助手
人工智能·powerpoint
LS_learner6 小时前
如何跟上当今AI高速发展的步伐
人工智能
不错就是对6 小时前
【Agent-lightning】 - 1_环境搭建
人工智能·pytorch·深度学习·机器学习·chatgpt·transformer·vllm
dazzle6 小时前
计算机视觉处理(OpenCV基础教学(十三):图像水印添加技术详解)
人工智能·opencv·计算机视觉
Wilson Chen6 小时前
从“手搓”到云原生:某 B2B 平台服装 AI 搜索架构演进实战
人工智能·云原生·架构
未来之窗软件服务6 小时前
幽冥大陆(八十七 ) 水果识别在线检测模型netron —东方仙盟练气期
人工智能·机器学习·ncnn·仙盟创梦ide·东方仙盟
村口曹大爷6 小时前
[特殊字符] 2026年AI最新趋势深度解读:智能体崛起、多模态融合、全球竞速加剧
人工智能·ai
Elastic 中国社区官方博客6 小时前
如何使用 LangChain 和 Elasticsearch 构建 agent 知识库
大数据·人工智能·elasticsearch·搜索引擎·ai·langchain·全文检索
星云数灵7 小时前
大模型高级工程师考试练习题1
人工智能·大模型·大模型工程师·大模型考试题·大模型工程师练习题·大模型高频考题