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

相关推荐
四口鲸鱼爱吃盐15 分钟前
Pytorch | 从零构建MobileNet对CIFAR10进行分类
人工智能·pytorch·分类
苏言の狗16 分钟前
Pytorch中关于Tensor的操作
人工智能·pytorch·python·深度学习·机器学习
bastgia1 小时前
Tokenformer: 下一代Transformer架构
人工智能·机器学习·llm
菜狗woc1 小时前
opencv-python的简单练习
人工智能·python·opencv
15年网络推广青哥1 小时前
国际抖音TikTok矩阵运营的关键要素有哪些?
大数据·人工智能·矩阵
weixin_387545641 小时前
探索 AnythingLLM:借助开源 AI 打造私有化智能知识库
人工智能
engchina2 小时前
如何在 Python 中忽略烦人的警告?
开发语言·人工智能·python
paixiaoxin3 小时前
CV-OCR经典论文解读|An Empirical Study of Scaling Law for OCR/OCR 缩放定律的实证研究
人工智能·深度学习·机器学习·生成对抗网络·计算机视觉·ocr·.net
西猫雷婶3 小时前
python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分
开发语言·python·opencv
OpenCSG3 小时前
CSGHub开源版本v1.2.0更新
人工智能