Pyton OpnCV讀取與保存圖片

来源:https://www.cnblogs.com/haifwu/archive/2020/05/07/12846774.html
-Advertisement-
Play Games

1. OpenCV讀取圖片 1.1 簡述 OpenCV讀取圖片的方法是cv2.imread(),讀取出來圖片的格式是BGR與常規的彩色圖像的格式(RGB)相反,這一點一定要註意。 OpenCV顯示圖片的方法是cv2.imshow(),顯示的格式是BGR。 小生就言於此O(∩_∩)O哈哈~,直接上例子 ...


1. OpenCV讀取圖片

1.1 簡述

  OpenCV讀取圖片的方法是cv2.imread(),讀取出來圖片的格式是BGR與常規的彩色圖像的格式(RGB)相反,這一點一定要註意。

  OpenCV顯示圖片的方法是cv2.imshow(),顯示的格式是BGR。

  小生就言於此O(∩_∩)O哈哈~,直接上例子。

1.2 例子

1.2.1 Code

 1 import cv2
 2 
 3 
 4 def cv2_imread():
 5     # 圖片路徑,相對路徑
 6     image_path = "./fusion_datasets/1.jpg"
 7     # 讀取圖片,格式為BGR
 8     image = cv2.imread(image_path)
 9     # 顯示圖片形狀
10     print("image_shape: ", image.shape)
11     # 縮放圖片
12     width = int(image.shape[0] / 2)
13     height = int(image.shape[1] / 2)
14     image = cv2.resize(image, (height, width), interpolation=cv2.INTER_CUBIC)
15     # 顯示圖片
16     cv2.imshow('girl', image)
17     cv2.waitKey(0)
18     cv2.destroyAllWindows()
19 
20 
21 if __name__ == '__main__':
22     cv2_imread()

 

1.2.2 結果顯示

 

 

 

2. OpenCV保存圖片

2.1 簡述

   OpenCV保存圖片用cv.imwrite(filename, img),filename為保存的路徑名稱,img為要保存的圖片。

  但實際應用中不會這麼簡單,(*^▽^*)我掐指一算,絕了O(∩_∩)O哈哈~,路過的寶寶們大多數的是想將tensor(tensor先轉為numpy)或numpy轉為cv2保存為圖片。

  需要註意如下幾點:

    1. cv2保存的共三個維度(高,寬,通道)。

    2. 保存的圖片格式也是BGR。

    3. 將numpy轉為np.uint8格式

2.2 例子

2.2.1 Code

 1 import cv2
 2 import numpy as np
 3 import torchvision.transforms as transforms
 4 
 5 
 6 def cv2_imwrite():
 7     # =============== 模擬圖片為tensor數據 ============ #
 8     # 圖片路徑,相對路徑
 9     image_path = "./fusion_datasets/1.jpg"
10     # 讀取圖片, 圖片格式為(height, width, channel)
11     image = cv2.imread(image_path)
12     # 圖像轉為tensor,此時圖片變為(channel, height, width),並將0-255歸一化為0-, 減小計算
13     input_transform = transforms.Compose([
14         transforms.ToTensor(),
15     ])
16     # unsqueeze(0):是在擴展維度由三維擴展為4維,(bathch_size, channel, height, width)
17     # 這是實際實驗中可能遇到,所以我才擴展維度的,也可以不擴展
18     image = input_transform(image).unsqueeze(0)
19 
20     # =============== 數據準備完成,開始保存 ============ #
21     # 1.首先將tensor降維度,4維降為3維:image.squeeze(0)
22     # 2.tensor轉為numpy:image.squeeze(0).numpy()
23     # 3.轉換維度,由(channel, height, width)變為(height, width, channel)
24     # 4.數據類型由numpy轉換維np.uint8(這是圖片應有的格式)
25     # 5.保存圖片,執行函數cv2.imwrite(filename, img),filename:保存路徑名要, img:保存的圖片
26     image = np.transpose(image.squeeze(0).numpy() * 255.0, (1, 2, 0)).astype(np.uint8)
27     cv2.imwrite("./results/" + "girl.jpg", image)
28 
29 
30 if __name__ == '__main__':
31     cv2_imwrite()

 

2.2.2 結果顯示

  圖片已保存~~

         

    打開圖片查看~~,哇哦,so beautiful(*^▽^*)!

   

 

 3. 總結

  努力去愛周圍的每一個人,付出,不一定有收穫,但是不付出就一定沒有收穫! 給街頭賣藝的人零錢,不和深夜還在擺攤的小販討價還價。願我的博客對你有所幫助(*^▽^*)(*^▽^*)!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 效果圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> <link rel="stylesheet" href="css/reset.css"> <link ...
  • 現在新進入web前端開發的人主要分二類,一是畢業就學web前端開發的;二是做了幾年其它工作,然後轉行web前端開發。那麼到底要學習多少技術,才能拿到高薪呢? 01、前端到底需要啥技能? 跨行業零基礎轉行前端的人,到底需要學習多少東西呢? 先看一下他們的弱項,主要體現在以下幾點: 已經參加工作,有生活 ...
  • 在 BasicLayout.jsx 文件中修改 <ProLayout layout="topmenu" className="chenshuai2144" disableMobile rightContentRender={ (rightProps) => <RightContent {...rig ...
  • 效果圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> <link rel="stylesheet" href="css/ui.css"> <link rel ...
  • json 什麼是JSON "JSON" ( "JavaScript" Object Notation) 是一種輕量級的數據交換格式。它基於 "ECMAScript" 的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括 "C" 、C++、 "C " 、 "Ja ...
  • 使用JQuery完成表單的校驗(擴展) 事件: ​ 獲得焦點事件: onfocus ​ 失去焦點事件: onblur ​ 按鍵抬起事件: onkeyup ​ 滑鼠移入: onmouseenter ​ 滑鼠移出: onmouseout JS引入外部文件 : script標簽 需求分析 在用戶提交表單的 ...
  • 使用JQuery完成下列列表左右選擇 Js相關技術 ​ select下拉列表 ​ multiple 允許多選 ​ ondblclick : 雙擊事件 ​ for迴圈遍歷,一邊遍歷一邊移除出現的問題 需求分析 我們的商品通常包含已經有了的, 還有沒有的,現在我們需要有一個頁面用於動態編輯這些商品 步驟 ...
  • 1 #include <Windows.h> 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 while(true) 8 { 9 if(-32767 == GetAsyncKeyState('A')) //不支持大小 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...