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/zh-hant/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
  • Avue中如何按照後端返回的鏈接顯示圖片

    Avue是一款基於Vue.js、Element-ui等技術棧的可視化開發框架,能夠輕鬆搭建前端頁面。在開發中,我們使用到的圖片通常都是存儲在後端服務器上的,那麼如何使用Avue來展…

    編程 2025-04-28
  • Python利用Image加圖片的方法

    在Python中,利用Image庫可以快速處理圖片,並加入需要的圖片,本文將從多個方面詳細闡述這個操作。 一、Image庫的安裝和基礎操作 首先,我們需要在Python中安裝Ima…

    編程 2025-04-28
  • 使用CKSlide實現圖片輪播

    CKSlide是一個基於jQuery的插件,可以方便地為網頁添加幻燈片和圖片輪播效果。使用CKSlide可以讓網站更加生動、活潑,給用戶帶來更好的體驗。 一、CKSlide基本用法…

    編程 2025-04-28

發表回復

登錄後才能評論