OpenCV图片缩放详解

一、OpenCV显示图片

在使用OpenCV之前,我们需要将原始图像加载到内存中。下面代码演示了如何使用OpenCV加载图像并将其显示在窗口中:

import cv2

# 加载图像
img = cv2.imread('img.jpg')

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示图像
cv2.imshow('image', img)

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

# 释放窗口
cv2.destroyAllWindows()

二、OpenCV图片处理

OpenCV支持图像操作,这包括通道分离、图像旋转、图像翻转、通道合并等操作。下面代码演示了如何使用OpenCV对图像进行通道拆分,并在RGB和灰度之间转换:

import cv2

# 加载图像
img = cv2.imread('img.jpg')

# 拆分通道
b, g, r = cv2.split(img)

# 合并通道
img = cv2.merge((b, g, r))

# 将图像转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示原始图像
cv2.imshow('image', img)

# 显示灰度图像
cv2.imshow('gray', gray)

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

# 释放窗口
cv2.destroyAllWindows()

三、OpenCV图像放大

当我们需要将图像进行放大时,OpenCV提供了两种方法。第一种方法是使用cv2.resize()函数来缩放图像,第二种方法是使用cv2.pyrUp()函数来执行图像金字塔操作。

1、使用cv2.resize()函数

cv2.resize()函数可以将图像缩放到指定的大小。下面代码演示了如何使用cv2.resize()函数将图像放大两倍:

import cv2

# 加载图像
img = cv2.imread('img.jpg')

# 缩放图像
resized_img = cv2.resize(img, (0, 0), fx=2, fy=2)

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示原始图像
cv2.imshow('image', img)

# 显示缩放图像
cv2.imshow('resized image', resized_img)

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

# 释放窗口
cv2.destroyAllWindows()

2、使用cv2.pyrUp()函数

cv2.pyrUp()函数可以将图像放大一倍,并通过重复使用此函数来达到放大任意倍数的目的。下面代码演示了如何使用cv2.pyrUp()函数来放大图像:

import cv2

# 加载图像
img = cv2.imread('img.jpg')

# 放大图像
new_shape = (img.shape[1]*2, img.shape[0]*2)
larger_img = cv2.pyrUp(img, dstsize=new_shape)

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示原始图像
cv2.imshow('image', img)

# 显示放大图像
cv2.imshow('larger image', larger_img)

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

# 释放窗口
cv2.destroyAllWindows()

四、OpenCV缩放图像实验报告

接下来,我们来进行缩放图像实验。我们将按照如下步骤进行:

1、加载图像

2、使用cv2.resize()函数将图像缩小到原始大小的50%

3、使用cv2.resize()函数将图像缩小到原始大小的25%

4、使用cv2.pyrDown()函数将图像缩小到原始大小的50%

5、使用cv2.pyrDown()函数将图像缩小到原始大小的25%

下面是实验代码:

import cv2

# 加载图像
img = cv2.imread('img.jpg')

# 缩小图像到原始大小的50%
resized1 = cv2.resize(img, (0, 0), fx=0.5, fy=0.5)

# 缩小图像到原始大小的25%
resized2 = cv2.resize(img, (0, 0), fx=0.25, fy=0.25)

# 使用金字塔缩小图像到原始大小的50%
pyrdown1 = cv2.pyrDown(img)
pyrdown1 = cv2.pyrDown(pyrdown1)

# 使用金字塔缩小图像到原始大小的25%
pyrdown2 = cv2.pyrDown(img)
pyrdown2 = cv2.pyrDown(pyrdown2)
pyrdown2 = cv2.pyrDown(pyrdown2)

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示原始图像
cv2.imshow('image', img)

# 显示缩小后图像1
cv2.imshow('resized1', resized1)

# 显示缩小后图像2
cv2.imshow('resized2', resized2)

# 显示金字塔缩小后图像1
cv2.imshow('pyrdown1', pyrdown1)

# 显示金字塔缩小后图像2
cv2.imshow('pyrdown2', pyrdown2)

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

# 释放窗口
cv2.destroyAllWindows()

五、OpenCV怎么把图片变清晰了

在使用OpenCV处理图像时,我们可能会遇到模糊图像的情况。OpenCV提供了两种方法来增强模糊图像的清晰度:锐化和去模糊。

1、锐化图像

锐化可以帮助我们强调图像中的边缘和细节,使图像更加清晰。下面代码演示了如何使用cv2.filter2D()函数对图像进行锐化处理:

import cv2
import numpy as np

# 加载图像
img = cv2.imread('img.jpg')

# 定义锐化内核
kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])

# 使用内核进行锐化
sharp_img = cv2.filter2D(img, -1, kernel)

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示原始图像
cv2.imshow('image', img)

# 显示锐化后的图像
cv2.imshow('sharp image', sharp_img)

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

# 释放窗口
cv2.destroyAllWindows()

2、去模糊

去模糊可以恢复图像的清晰度,但有可能会引入噪音。下面代码演示了如何使用cv2.filter2D()函数对图像进行去模糊处理:

import cv2
import numpy as np

# 加载模糊的图像
img = cv2.imread('blurry_img.jpg')

# 定义去模糊内核
kernel = np.ones((5,5), np.float32)/25

# 使用内核进行去模糊
blurry_img = cv2.filter2D(img, -1, kernel)

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示模糊的图像
cv2.imshow('image', img)

# 显示去模糊后的图像
cv2.imshow('blurred image', blurry_img)

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

# 释放窗口
cv2.destroyAllWindows()

六、OpenCV图片增强

当我们需要通过提高图像的对比度和亮度来增强图像时,OpenCV提供了cv2.addWeighted()函数。

下面代码演示了如何使用cv2.addWeighted()函数对图像进行增强处理:

import cv2

# 加载图像
img = cv2.imread('img.jpg')

# 提高图像的对比度和亮度
alpha = 1.5 # 对比度参数
beta = 0 # 亮度参数
enhanced_img = cv2.addWeighted(img, alpha, np.zeros(img.shape, img.dtype), 0, beta)

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示原始图像
cv2.imshow('image', img)

# 显示增强后的图像
cv2.imshow('enhanced image', enhanced_img)

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

# 释放窗口
cv2.destroyAllWindows()

七、OpenCV图片截取

在使用OpenCV处理图像时,我们可能需要从原始图像中截取出感兴趣的区域。下面代码演示了如何使用numpy索引来截取图像:

import cv2

# 加载图像
img = cv2.imread('img.jpg')

# 截取图像区域
cropped_img = img[100:300, 200:400]

# 创建图像窗口
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

# 显示原始图像
cv2.imshow('image', img)

# 显示截取出的小图像
cv2.imshow('cropped image', cropped_img)

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

# 释放窗口
cv2.destroyAllWindows()

八、QtOpenCV图片缩放

Qt提供了一些用于图形图像处理的库,其中最流行的是QtOpenCV库。使用该库,我们可以在Qt应用程序中展示OpenCV处理的图像。

下面代码演示了如何使用QWidget和QHBoxLayout组件来显示OpenCV缩放后的图像:

import sys
import cv2
from PyQt5.QtWidgets import QWidget, QLabel, QApplication, QHBoxLayout
from PyQt5.QtGui import QImage, QPixmap

class ImageViewer(QWidget):

    def __init__(self):
        super().__init__()

        # 加载图像
        self.img = cv2.imread('img.jpg')

        # 缩放图像
        self.resized_img = cv2.resize(self.img, (0, 0), fx=0.5, fy=0.5)

        # 创建标签
        self.label_orig = QLabel(self)
        self.label_resized = QLabel(self)

        # 创建布局
        hbox = QHBoxLayout()
        hbox.addWidget(self.label_orig)
        hbox.addWidget(self.label_resized)

        # 设置窗口布局为布局
        self.setLayout(hbox)

        # 显示图像
        self.show_image()

    def show_image(self):

        # 将原始图像和缩放后的图像转换为QImage格式
        qimg_orig = QImage(self.img.data, self.img.shape[1], self.img.shape[0], self.img.strides[0], QImage.Format_RGB888)
        qimg_resized = QImage(self.resized_img.data, self.resized_img.shape[1], self.resized_img.shape[0], self.resized_img.strides[0], QImage.Format_RGB888)

        # 将QImage格式的图像设置为标签的内容
        self.label_orig.setPixmap(QPixmap.fromImage(qimg_orig))
        self.label_resized.setPixmap(QPixmap.fromImage(qimg_resized))

        # 调整标签的大小
        self.label_orig.adjustSize()
        self.label_resized.adjustSize()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    viewer = ImageViewer()
    viewer.show()
    sys.exit(app.exec_())

九、OpenCV图片缩放原理</h

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/301586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-30 16:09
下一篇 2024-12-30 16:09

相关推荐

  • 如何在PyCharm中安装OpenCV?

    本文将从以下几个方面详细介绍如何在PyCharm中安装OpenCV。 一、安装Python 在安装OpenCV之前,请确保已经安装了Python。 如果您还没有安装Python,可…

    编程 2025-04-29
  • 用Python绘制酷炫图片

    在本篇文章中,我们将展示如何使用Python绘制酷炫的图片。 一、安装Python绘图库 在使用Python绘制图片之前,我们需要先安装Python绘图库。Python有很多绘图库…

    编程 2025-04-29
  • Python OpenCV 直线检测

    本文将介绍在Python OpenCV中进行直线检测的方法,主要涉及到图像的边缘检测、霍夫变换和绘制直线等操作。 一、边缘检测 由于直线检测是从图像的边缘开始的,因此必须先找到图像…

    编程 2025-04-29
  • 使用axios获取返回图片

    使用axios获取返回图片是Web开发中很常见的需求。本文将介绍如何使用axios获取返回图片,并从多个方面进行详细阐述。 一、安装axios 使用axios获取返回图片前,首先需…

    编程 2025-04-29
  • Python 图片转表格

    本文将详细介绍如何使用Python将图片转为表格。大家平时在处理一些资料的时候难免会遇到图片转表格的需求。比如从PDF文档中提取表格等场景。当然,这个功能也可以通过手动复制、粘贴,…

    编程 2025-04-29
  • Python缓存图片的处理方式

    本文将从多个方面详细阐述Python缓存图片的处理方式,包括缓存原理、缓存框架、缓存策略、缓存更新和缓存清除等方面。 一、缓存原理 缓存是一种提高应用程序性能的技术,在网络应用中流…

    编程 2025-04-29
  • Python如何抓取图片数据

    Python是一门强大的编程语言,能够轻松地进行各种数据抓取与处理。抓取图片数据是一个非常常见的需求。在这篇文章中,我们将从多个方面介绍Python如何抓取图片数据。 一、使用ur…

    编程 2025-04-29
  • Python利用Image加图片的方法

    在Python中,利用Image库可以快速处理图片,并加入需要的图片,本文将从多个方面详细阐述这个操作。 一、Image库的安装和基础操作 首先,我们需要在Python中安装Ima…

    编程 2025-04-28
  • Avue中如何按照后端返回的链接显示图片

    Avue是一款基于Vue.js、Element-ui等技术栈的可视化开发框架,能够轻松搭建前端页面。在开发中,我们使用到的图片通常都是存储在后端服务器上的,那么如何使用Avue来展…

    编程 2025-04-28
  • 使用CKSlide实现图片轮播

    CKSlide是一个基于jQuery的插件,可以方便地为网页添加幻灯片和图片轮播效果。使用CKSlide可以让网站更加生动、活泼,给用户带来更好的体验。 一、CKSlide基本用法…

    编程 2025-04-28

发表回复

登录后才能评论