OpenCV(01)基本圖像操作、繪制,讀取視頻

圖像基礎

import cv2 as cv#讀取圖像 cv.imread(path,讀取方式)默認讀為彩色圖像
#cv.imread(path)
cat = cv.imread('E:\hqyj\code\opencv\images\\face.png')#顯示圖像 cv.imshow(window,img)
cv.imshow('myimg',cat)print(cat)
print(cat.shape)    #(h,w,c) 元組(1,1)
print(cat.dtype)    #uint8
print('=' * 50)#設為灰度圖
cat1 = cv.imread('opencv\images\\1.jpg',cv.IMREAD_GRAYSCALE)
print(cat1)
print(cat1.shape)#保存圖像 cv.imwrite(path,img)
cv.imwrite("./grey.jpg",cat1)
cv.imshow('cat',cat1)#留下繪制時間,cv.waitKey(n)等待n毫秒
cv.waitKey(0)#釋放資源
cv.destroyAllWindows()

圖像剪裁、繪制

  • 剪裁
import numpy as np
import cv2 as cvpig=cv.imread('opencv\images\pig.png')
cv.imshow('pig',pig)#切片(409,349),(534,415)(w,h)
nose=pig[329:429,410:539]   #(y:y+h,x,x+w)
cv.imshow('dst',nose)
cv.waitKey(0)
cv.destroyAllWindows()
  • 繪制
import numpy as np
import cv2 as cvpig=cv.imread('opencv\images\pig.png')
#繪制直線 cv.line(img,start,end,color,thickness) (w,h)
cv.line(pig,(400,212),(584,217),(0,0,255),5)
cv.line(pig,(400,212),(414,78),(0,0,255),5)
cv.line(pig,(584,217),(605,72),(0,0,255),5)#繪制矩形 cv.rectangle(img,start,end,color,thickness) thickness=-1 填充
cv.rectangle(pig,(409,349),(534,415),(0,255,0),-1)#繪制圓形 cv.circle(img,center,radius,color,thickness)
#cv.LINE_AA 反走樣技術、抗鋸齒、圓滑,默認使用LINE_8
cv.circle(pig,(400,212),50,(0,0,0),-1,cv.LINE_AA)
cv.circle(pig,(584,217),50,(0,0,0),-1,cv.LINE_AA)cv.imshow('pig',pig)
cv.waitKey(0)
cv.destroyAllWindows()

黑、白&隨機像素值圖像

import numpy as np
import cv2 as cv#創建一個全零數組 表示黑色圖像
height, width, c = 360, 480, 3
black = np.zeros((height,width,c), np.uint8)
cv.imshow('black',black)#使用np.full() 創建白色圖像
white = np.full((360,480,3),fill_value=255, dtype=np.uint8)
cv.imshow('white',white)#索引修改像素值 表示白色圖像
black[:,:,:] = 255
# black[:,:] = 255
# black[:] = 255
cv.imshow('W',black)#創建隨機像素值的圖像
dst = np.random.randint(0,255,(360,480,3),dtype=np.uint8)   #左閉右開,255取不到
cv.imshow('random',dst)cv.waitKey(0)
cv.destroyAllWindows()

讀取視頻

import cv2 as cv#創建一個videocaptrue對象
#cv.VideoCapture()
#cap=cv.VideoCapture('opencv/images/videocap.mp4')#獲取實時視頻流
cap=cv.VideoCapture(0)
#循環讀取每一幀圖像
while True:#調用read方法讀取每一幀圖像ret,img = cap.read()	#布爾值ret,幀圖像img#判斷是否讀取成功if not ret:print('error!')breakcv.imshow('video',img)key = cv.waitKey(1)&0xFFif key == ord('q') or key == ord('Q'):breakcap.release()	#停止視頻捕獲,關閉攝像頭或釋放視頻文件,并釋放所有相關資源
cv.destroyAllWindows()

調整圖像大小

import cv2 as cv
import numpy as np#讀取圖像
pig=cv.imread('opencv\images\\pig.png')
print(pig.shape)#調整圖像大小cv.resize(img,(w,h,c))
#使用插值算法來計算新像素的值,從而在調整尺寸時保持圖像的平滑性和質量。
pig2=cv.resize(pig,(480,520))
cv.imshow('old',pig)
cv.imshow('pig2',pig2)
print(pig2.shape)#np.reshape(img,(h,w,c))
#reshape保持像素個數不變,只是重構元組數據,不推薦使用
# pig3=np.reshape(pig2,(520,480,3))
# cv.imshow('pig3',pig3)cv.waitKey(0)
cv.destroyAllWindows()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90199.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90199.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90199.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

biji 1

1.應用層:為應用程序提供網絡服務。2.表示層:定義數據的格式,對數據進行壓縮、解壓縮、加密、解密、編碼、解碼。3.會話層:對通信雙方間的會話進行建立、維護、拆除-----session id---區分同一應用程序的不同進程4.傳輸層&#x…

mongodb的備份和還原(精簡)

1 官網下載對應版本msi2 運行msi mongodb-database-tools-windows-x86_64-100.12.2.msi3 將安裝地址加到環境變量 C:\Program Files\MongoDB\Tools\100\bin4 查看version mongodump --version mongorestore --version5 運行 備份命令 mongodump --host 127.0.0.1 --db dbname--…

Mac安裝Typescript報錯

目錄 Mac上安裝Typescript報錯: 原因分析 1. 默認 npm 全局安裝目錄的權限問題 2. Node.js 的安裝方式 如何解決?(無需每次用 `sudo`) 方法 1:修改 npm 全局目錄的權限(推薦) 方法 2:配置 npm 使用用戶級目錄 方法 3:使用 `nvm` 管理 Node.js(最推薦) 為什么建議避免…

spring-cloud概述

單體架構 把業務的所有功能實現都打包在一個war包或者jar包,這種方式就成為單體架構。 比如Spring課程中的博客系統,前端后端數據庫實現,都在一個項目中,這種架構就稱為單體架構. 舉個例子: 比如在電商系統中,我們…

android ROOM kotlin官方文檔完全學習

android ROOM kotlin官方文檔完全學習2.6 使用 Room 將數據保存到本地數據庫 | Android Developers (google.cn) 一、簡介 1.1 引入 dependencies {def room_version "2.6.1"implementation "androidx.room:room-runtime:$room_version"//如下三選一a…

DOM編程全解析:操作、事件與存儲實戰指南

引言:DOM——JavaScript與網頁交互的橋梁 DOM(文檔對象模型) 是JavaScript操作HTML/XML文檔的接口,它將網頁文檔抽象為一個樹形結構,允許開發者通過API動態修改文檔的內容、結構和樣式。無論是實現動態交互&#xff0…

Ansible命令

Ansible命令 ansible 常用命令 /usr/bin/ansible   #Ansibe AD-Hoc 臨時命令執行工具,常用于臨時命令的執行 /usr/bin/ansible-doc    #Ansible 模塊功能查看工具 /usr/bin/ansible-galaxy   #下載/上傳優秀代碼或Roles模塊 的官網平臺,基于網…

SY6974芯片添加enable充電控制節點

1. 需求描述項目背景:基于 Qualcomm MDM9x07 平臺的 4G MIFI 產品,使用 Silergy 公司的 SY6974 充電 IC需求內容: 在環境 /sys/class/power_supply/sy6794/enable 下增加一個 sysfs 節點,用于控制是否允許充電:cat /sy…

趣玩-Ollama-Llm-Chatrbot

軟件說明 這個軟件本人是從零開始實現的聊天機器人。基于Ollama(PythonApi ) Pyside,實現了聊天機器的基本功能,還有一些個性化的功能比如模型管理,敏感詞過濾,個性化主題設置,頭像設置等功能。…

在mac 上zsh 如何安裝最新的 go 工具

文章目錄方法一:使用 Homebrew(推薦)方法二:從官網下載安裝包方法三:使用 g(Go 版本管理器)方法四:使用 gvm(Go Version Manager)驗證安裝和配置常用 Go 工具…

(十九)深入了解 AVFoundation-編輯:使用 AVMutableVideoComposition 實現視頻加水印與圖層合成(上)——理論篇

一、引言在短視頻、Vlog、剪輯工具日益流行的今天,給視頻添加 Logo、水印、時間戳或動態貼紙,已經成為非常常見的功能需求。這類效果看似簡單,其實背后都涉及到“圖層合成”的處理:如何將一個靜態或動態的圖層(如文字、…

Android NDK與JNI深度解析

核心概念定義:NDK (Native Development Kit): 是什么: 一套由 Google 提供的工具集合。目的: 允許 Android 開發者使用 C 和 C 等原生(Native)語言來實現應用程序的部分功能。包含內容: 交叉編譯器&#xf…

Golang各版本特性

1. Go各版本特性 | FeelingLife 2. https://chatgpt.com/share/68808f58-ae5c-800a-8153-5358098f301b 3.https://tonybai.com/2024/11/14/go-map-use-swiss-table/

HTML 轉 Word API 接口

HTML 轉 Word API 接口 支持網頁轉 Word,高效轉換為 Word,提供永久鏈接。 1. 產品功能 超高性能轉換效率;支持將傳遞的 HTML 轉換為 Word,支持 HTML 中的 CSS 格式在 Word 文檔中的呈現;支持傳遞網站的 URL&#xff…

Lucid Search: 極簡、隱私友好的問答式搜索引擎技術解析

Lucid Search: 極簡、隱私友好的問答式搜索引擎技術解析 產品定位與價值主張 Lucid Search 是一款革命性的問答式搜索引擎,其核心價值在于: 極簡體驗:無賬戶、無廣告、前端完全靜態隱私保護:不寫入 Cookie、不記錄 IP、無追蹤即…

卷積神經網絡:模型評估標準

一、分類模型評價指標在模型評估中,有多個標準用于衡量模型的性能,這些標準包括準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1 分數(F1-Score)等…

【前端工程化】前端開發中想做好發布管理可以從哪些方面著手?

在企業級后臺系統中,發布管理是整個開發流程的最終環節,也是最為關鍵的一環。它不僅涉及代碼構建完成后的部署操作,還包括版本控制、灰度發布、回滾機制等保障系統穩定性的措施。 本文主要圍繞發布流程設計、版本控制、部署方式、灰度策略和回…

替分布式=成本下降50% !

在數字化轉型的浪潮中,數據庫作為醫療信息系統的“心臟”,其穩定性與效率直接關乎醫療服務的質量。2024年10月30日,綿陽市第三人民醫院集成平臺的CDR數據庫成功從分布式數據庫Citus切換為國產集中式數據庫KingbaseES,并穩定運行至…

【Linux系統編程】基礎指令

基礎指令1. adduser指令&&passwd指令2. userdel指令3. pwd指令4. ls指令5. cd指令6. tree指令7. touch指令8. mkdir指令9. rmdir指令&&rm指令10. man指令11. cp指令12. mv指令13. cat指令14. more指令15. less指令16. head指令17. tail指令18. date指令19. cal…

區塊鏈之以太坊Hardhat開發框架——部署在windows為例

Hardhat 提供了一個靈活且易于使用的開發環境,可以輕松地編寫、測試和部署智能合約。Hardhat還內置了Hardhat 網絡(Hardhat Node),它是為開發而設計的本地以太坊網絡。 下面是hardhat的官方文檔 https://hardhat.org/hardhat-ru…