opencv-python獲取圖像:面向對象與面向過程

2020-12-17 青楓流雲

獲取圖像的方式有:1,讀取本地圖片,2,調用筆記本自帶攝像頭或usb攝像頭,3,調用網絡攝像頭。

這裡需要注意以下,opencv讀取圖片默認通道為BGR的格式,當在其他UI用戶界面顯示圖像時注意轉換一下通道順序,例如BGR轉換成RGB:

Image1=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

下面讀取一張圖片並顯示

讀取圖片

學過數字圖像處理的小夥伴應該很熟悉,在數字圖像處理課上,這是一張標準的測試圖片。關於圖片的來源:1973年6月,美國南加州大學的信號圖像處理研究所的一個助理教授和他的一個研究生打算為了一個學術會議找一張數字照片,而他們對於手頭現有成堆"無聊"照片感到厭煩。事實上他們需要的是一個人臉照片,同時又能讓人眼前一亮。這時正好有人走進實驗室,手上帶著一本當時的花花公子雜誌,結果故事發生了……而限於當時實驗室設備和測試圖片的需要,lenna的圖片只摳到了原圖的肩膀部分。

Lena圖像在科研領域流行的原因:1.該圖適度的混合了細節、平滑區域、陰影和紋理,從而能很好的測試各種圖像處理算法。2.Lenna是個美女,對於圖像處理界的研究者(大部分都是男性)來說,美女圖可以有效地吸引他們來做研究。

下面是分別用面向過程與面向對象的編程方法實現讀取本地圖像和打開攝像頭兩段代碼:

# -*- coding: utf-8 -*-

"""

面向過程的編程方法,用函數把解決問題的步驟一步一步實現。

運行環境:win10系統 python==3.6 opencv-contrib-python== 4.1.0

第一行「# -*- coding: utf-8 -*-」 告訴Python解釋器,按照UTF-8編碼讀取原始碼

"""

import cv2

image=cv2.imread('lena.JPG') #讀取本地圖片,圖片與源文件放在一起

cv2.imshow("lena",image) #顯示

#

#調用攝像頭,cv2.VideoCapture(0),0表示使用默認攝像頭,如果有多個攝像頭,填寫不同的數字即可

#

#調用網絡攝像頭# 根據攝像頭設置IP及rtsp埠(手上沒有網絡攝像頭,沒有測試)

#url = 'rtsp://account:password@192.168.0.35:554/11'

#camera = cv2.VideoCapture(url)

#

camera = cv2.VideoCapture(0) #使用默認攝像頭

while(True):

ret,frame = camera.read() #frame圖片,參數ret為True 或False,代表是否讀取成功

cv2.imshow('camera',frame) #顯示

K=cv2.waitKey(10) #等待10ms,並檢測按鍵

if K == 27: #按下 Esc 退出,窗口活動時有效

break

camera.release() #釋放攝像頭

cv2.waitKey(0) #等待按下任意鍵,窗口活動時有效

cv2.destroyAllWindows() #銷毀所有窗口

# -*- coding: utf-8 -*-

"""

定義類,面向對象的編程方法,程序設計的重點在於數據而不是步驟,以功能來劃分問題

運行環境 python==3.6 opencv-contrib-python== 4.1.0 win10系統

第一行 「 # -*- coding: utf-8 -*- 」 告訴Python解釋器,按照UTF-8編碼讀取原始碼

"""

#圖像獲取

import cv2

import numpy as np

#

class image():

#創建一個 image類

def __init__(self, name,model=0): # 構造函數

#初始化屬性

self.name = name

self.model = model # 給屬性指定默認值

def read(self): # 定義一個read()方法 讀取本地圖片

self.image=cv2.imread(self.model) #讀取本地圖片

def openCamera(self): # 定義一個 openCamera()方法

self.camera = cv2.VideoCapture(self.model) #使用默認攝像頭

def run(self): # 定義一個run()方法

self.ret,self.image = self.camera.read() #image圖片,參數ret為True 或False,代表是否讀取成功

def close(self):

self.camera.release() #釋放攝像頭

#

if __name__ == '__main__':

」」」

if __name__ == '__main__': 的作用

python代碼文件使用時有兩種方法,1,直接作為腳本執行,有沒有if __name__ == 'main':這 句無影響。2,import到其他的python腳本執行。如果沒有if __name__ == 'main': 時,想import 到其他的python腳本調用此腳本裡面的函數時會執行整個python代碼,而我們只想調用某個函 數,這時就要加上if __name__ == 'main':這句了。

」」」

m1=image("image1",0)

m1.openCamera()

while(1):

m1.run()

image1=m1.image

cv2.imshow('camera',image1) #顯示

K=cv2.waitKey(500) #等待按下任意鍵,窗口活動時有效

if K == 27: #按下 Esc 退出,窗口活動時有效

m1.close()

break

cv2.destroyAllWindows() #銷毀所有窗口

#

m2=image("image2",model='lena.JPG')

m2.read()

cv2.imshow(lena,m2.image)

cv2.waitKey(0)

cv2.destroyAllWindows() #銷毀所有窗口

面向過程性能更高,面向對象易維護、易復用、易擴展。兩種方法各有各的優勢,使用時要根據實際情況選擇。

相關焦點

  • 面向Python的OpenCV輕鬆入門——第一章(1)
    雖然 Python2和 Python3有很多相同之處,以至於 Python2的讀者也可以使用本書,但還是要說明一下,本書直接面向的版本是 Python3。 可以在Python的官網上(htps:/www.python.org/downloads/)下載Python3的解釋器。
  • Python 圖像處理 OpenCV (1):入門
    安裝OpenCV 在 Python 中有兩個類庫,一個是 opencv-python ,另一個是 opencv-contrib-python 。opencv-python 是只包含了主要模塊的包,而 opencv-contrib-python 包含了主要模塊以及一些擴展模塊,帶一些收費或者專利的算法,還有一些比較新的算法的高級版本。
  • Python+OpenCV的基礎圖像處理操作匯總
    通過在CMD(命令提示符)中發出以下命令來安裝opencv python(這是一個用於python的非正式預構建opencv包):opencv-contrib-python(包含main和contrib模塊)opencv-python-headless(與opencv-python相同,但沒有
  • 「Python+cv2」Python安裝opencv及圖像的基本操作
    Python環境opencv的安裝1、檢查是否安裝python環境3、安裝opencvpython環境下opencv的安裝:pip3 install opencv-pythonpython opencv安裝因為我已經安裝,所以會出現安裝位置的提示。
  • Python面向對象程式語言
    Python (發音:[ 'paiθ(ə)n; (US) 'paiθɔn ]n.蟒蛇,巨蛇 ),是一種面向對象的解釋性的電腦程式設計語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史這個過程通過編譯器和不同的標記、選項完成。當你運行你的程序的時候,連接/ 轉載器軟體把你的程序從硬碟複製到內存中並且運行。而Python語言寫的程序不需要編譯成二進位代碼。你可以直接從原始碼 運行 程序。在計算機內部,Python解釋器把原始碼轉換成稱為字節碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。
  • opencv-python圖像預處理-濾波
    為了消除外界環境對圖像採集的幹擾,增強圖像的邊緣及灰度跳變的部分,使圖像變得清晰以及提高圖像處理速度需要對圖像進行預處理操作,主要是對圖像進行濾波和增強操作。使用的方法可以分為空間域處理和頻率域處理兩類。空間域指圖像平面本身,這類圖像處理方法用各種模板直接與圖像進行卷積運算,實現對圖像的處理。
  • 使用Python+OpenCV實現圖像數據採集
    在Anaconda或命令提示符中鍵入conda create -n opencv python=3.6這將在Python版本3.6中創建一個名為opencv的新環境,可以用正在使用的任何版本替換它。下一步,輸入pip install opencv-python你已經成功安裝了cv2! 現在你可以開始拍照了。
  • python利用opencv實現證件照換底
    opencv今天就給大家介紹一下python利用opencv庫進行藍底換紅底或者白底照片的操作。1.強大的opencv庫說到圖像處理,不得不提opencv庫。它是一個跨平臺的計算機視覺庫,可以運行在不同作業系統上,它由一些列c函數和少量c++函數組成,並提供python,matlab等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。我們這裡用的opencv-python 就是opencv的python API接口。
  • 基於opencv 的圖像處理入門教程
    /代碼和樣例圖片的地址:https://github.com/ccc013/CodesNotes/tree/master/opencv_noteshttps://github.com/ccc013/CodesNotes/blob/master/opencv_notes/opencv_image_process_tutorial.ipynb
  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 來一點Python面向對象第一級進階的東西
    它首先被程序語言的設計領域所採用,並在Lisp和面向對象方面取得了成績。python面向對象中的反射:通過字符串的形式操作對象相關屬性.python中的一切事物都是對象(都可以使用反射)四個可以實現自省的函數下列方法適用類和對象(一切皆對象,類本身也是一個對象)hasattrdefhasattr(*args, **kwargs):# real signature unknown""" Return
  • 「python opencv 計算機視覺零基礎實戰」第一節
    前置條件說明:本系列opencv實戰教程將從基礎到實戰,若只是簡單學習完python也可以通過該教程完成一般的機器學習編程;文中將會對很多python的基礎內容進行講解,但由於文章定位的原因將不會贅述過多的基礎內容,基礎內容進行第一次講解後第二次將不會過多贅述,本文主要講解的是opencv相關知識。
  • 從零入門量化交易系列-python的面向對象
    1、面向對象基礎概念類(Class): 用來描述具有相同屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。
  • 史上最全 Python 面向對象編程
    (面向過程編程)都是程序設計的方法,不過稍有區別。根據需要,決定是否寫一個main函數作為程序入口面向對象編程中,將函數和變量進一步封裝成類,類才是程序的基本元素,它將數據和操作緊密地連結在一起,並保護數據不會被外界的函數意外地改變。類和和類的實例(也稱對象)是面向對象的核心概念,是和面向過程編程、函數式編程的根本區別。
  • OpenCV-Python Meanshift和Camshift|四十七
    學習目標在本章中,我們將學習用於跟蹤視頻中對象的Meanshift和Camshift算法。MeanshiftMeanshift背後的直覺很簡單,假設你有點的集合。(它可以是像素分布,例如直方圖反投影)。
  • Python入門基礎之面向對象二:類和實例、方法
    前面一篇文章我介紹了python面向對象的基本知識,連結在最下面。初步解釋了面向對象和面向對象的優點,今天就開始正式用代碼來展現面向對象。1、利用class創建類Python中,創建類的語句是如下所示先解釋一下,class後面跟的是類名,括號裡面是基類(也成為父類)python3中默認繼承object。
  • python面向對象,小白從零開始,python基礎入門,你會了嗎?
    Python,是一種面向對象的解釋型電腦程式設計語言,以簡單、易學、速度快等優點,是大部分想進入IT行業的從業人的選擇。IEEE發布2017年程式語言排行榜:Python超過JAVA程式語言排名第一。所以Python非常熱門的程式語言!
  • python面向對象三大特徵
    大概所有變成初學者初學者最頭疼的第一道坎就是面向對象的理解封裝從封裝本身去理解 就是把小貓小狗用袋子裝起來,然後把袋子的小口封上私有化方法:方法的私有化可以保護好一些核心的代碼,可以添加條件,是別人不能不滿足條件的更改,進行代碼的保護,python
  • 【視覺與圖像】Python+OpenCV教程入門篇
    另外,圖像是矩陣數據,OpenCV-Python原生支持Numpy,相當於Python中的Matlab,為矩陣運算、科學計算提供了極大的便利性。近些年,人工智慧相關技術的快速發展大家有目共睹,不必多說。
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,使用起來十分方便,把它與PyQt結合起來,就可以順利的操作視頻、圖像了。具體安裝請自行百度,這裡介紹使用方法。