最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python-OpenCV基本操作方法詳解

 更新時(shí)間:2018年04月02日 09:27:11   作者:Ciroo  
下面小編就為大家分享一篇Python-OpenCV基本操作方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

基本屬性

cv2.imread(文件名,屬性) 讀入圖像

屬性:指定圖像用哪種方式讀取文件

cv2.IMREAD_COLOR:讀入彩色圖像,默認(rèn)參數(shù),Opencv 讀取彩色圖像為BGR模式 !?。∽⒁?/p>

cv2.IMREAD_GRAYSCALE:讀入灰度圖像。

cv2.imshow(窗口名,圖像文件) 顯示圖像

可以創(chuàng)建多個(gè)窗口

cv2.waitKey() 鍵盤(pán)綁定函數(shù)

函數(shù)等待特定的幾毫秒,看是否由鍵盤(pán)輸入。

cv2.namedWindow(窗口名,屬性) 創(chuàng)建一個(gè)窗口

屬性:指定窗口大小模式

cv2.WINDOW_AUTOSIZE:根據(jù)圖像大小自動(dòng)創(chuàng)建大小

cv2.WINDOW_NORMAL:窗口大小可調(diào)整

cv2.destoryAllWindows(窗口名) 刪除任何建立的窗口

代碼實(shí)例:

import cv2
 img=cv2.imread('test.py',cv2.IMREAD_COLOR)
 cv2.namedWindow('image',cv2.WINDOW_NORMAL)
 cv2.imshow('image',img)
 cv2.waitKey(0)
 cv2.destoryAllWindows()

cv2.imwrite(保存圖像名,需保存圖像) 保存圖像

代碼實(shí)例:

 import cv2
 img=cv2.imread('test.png',0)
 cv2.imshow('image',img)
 k=cv2.waitKey(0)
 if k==27: #等待 ESC 鍵
  cv2.destoryAllWindows()
 elif k==ord('s') #等待 's' 鍵來(lái)保存和退出
  cv2.imwrite('messigray.png',img)
  cv2.destoryAllWindows()

對(duì)于圖像的一些操作

0x01. 獲取圖片屬性

import cv2
img=img.imread('test.png')
print img.shape
#(768,1024,3)
print img.size
#2359296 768*1024*3
print img.dtype
#uint8

0x02. 輸出文本

在處理圖片時(shí),將一些信息直接以文字的形式輸出在圖片上

cv2.putText(圖片名,文字,坐標(biāo),文字顏色)

0x03. 縮放圖片

實(shí)現(xiàn)縮放圖片并保存,在使用OpenCV時(shí)常用的操作。cv2.resize()支持多種插值算法,默認(rèn)使用cv2.INTER_LINEAR,縮小最適合使用:cv2.INTER_AREA,放大最適合使用:cv2.INTER_CUBIC或cv2.INTER_LINEAR。

res=cv2.resize(image,(2*width,2*height),interpolation=cv2.INTER_CUBIC) 

或者:

res=cv2.resize(image,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC) 

此處None本應(yīng)該是輸出圖像的尺寸,因?yàn)楹筮呍O(shè)置了縮放因子

0x04. 圖像平移

cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) 

平移就是將圖像換個(gè)位置,如果要沿(x,y)方向移動(dòng),移動(dòng)距離為(tx,ty),則需要構(gòu)建偏移矩陣M。

例如 平移圖片(100,50)

 import cv2
 img=cv2.imread('test.png',1)
 rows,cols,channel=img.shape
 M=np.float32([[1,0,100],[0,1,50]])
 dst=cv2.warpAffine(img,M,(cols,rows))
 cv2.imshow('img',dst)
 cv2.waitKey(0)
 cv2.destoryALLWindows()

其中 (cols,rows)代表輸出圖像的大小,M為變換矩陣,100代表x的偏移量,50代表y的偏移量,單位為像素。

0x05. 圖像旋轉(zhuǎn)

OpenCV中首先需要構(gòu)造一個(gè)旋轉(zhuǎn)矩陣,通過(guò)cv2.getRotationMatrix2D獲得。

import cv2
img=cv2.imread('test.png',0)
rows,cols=img.shape
#第一個(gè)參數(shù)為旋轉(zhuǎn)中心,第二個(gè)為旋轉(zhuǎn)角度,第三個(gè)為旋轉(zhuǎn)后的縮放因子
M=cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
#第三個(gè)參數(shù)為圖像的尺寸中心
dst=cv2.warpAffine(img,M,(2*cols,2*rows))
cv2.imshow('img',dst)
cv2.waitKey(0)
cv2.destoryALLWindows()

0x06. 仿射變換

在仿射變換中,原圖中所有的平行線在結(jié)果圖像中同樣平行。為了創(chuàng)建偏移矩陣,需要在原圖像中找到三個(gè)點(diǎn)以及它們?cè)谳敵鰣D像中的位置。然后OpenCV中提供了cv2.getAffineTransform創(chuàng)建2*3的矩陣,最后將矩陣傳給函數(shù)cv2.warpAffine。

import cv2
import matplotlib.pyplot as plt
import numpy as np
img=cv2.imread('test.png')
rows,cols,ch=img.shape
pts1=np.float32([[50,50],[200,50],[50,200]])
pts2=np.float32([[10,100],[200,50],[100,250]])
M=cv2.getAffineTransform(pts1,pts2)
dst=cv2.warpAffine(img,M,(cols,rows))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()

0x07. 透視變換

視角變換,需要一個(gè)3*3變換矩陣。在變換前后要保證直線還是直線。構(gòu)建此矩陣需要在輸入圖像中找尋4個(gè)點(diǎn),以及在輸出圖像中對(duì)應(yīng)的位置。這四個(gè)點(diǎn)中的任意三個(gè)點(diǎn)不能共線。變換矩陣OpenCV提供cv2.getPerspectiveTransform()構(gòu)建。然后將矩陣傳入函數(shù)cv2.warpPerspective。

import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('test.png')
rows,cols,ch=img.shape
pts1=np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2=np.float32([[0,0],[300,0],[0,300],[300,300]])
M=cv2.getPerspectiveTransform(pts1,pts2)
dst=cv2.warpPerspective(img,M,(300,300))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()

0x09. 圖像 regions of Interest

有時(shí)需要對(duì)一副圖像的特定區(qū)域進(jìn)行操作,ROI使用Numpy索引來(lái)獲得的。

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread('test.png')
rows,cols,ch=image.shape
tall=image[0:100,300:700]
image[0:100,600:1000]=tallall
cv2.imshow("image",image)
cv2.waitKey(0)
cv2.destoryALLWindows()

0x10. 通道的拆分/合并處理

有時(shí)需要對(duì)BGR三個(gè)通道分別進(jìn)行操作。這時(shí)需要將BGR拆分成單個(gè)通道。同時(shí)有時(shí)需要把獨(dú)立通道的圖片合并成一個(gè)BGR圖像。

使用OpenCV庫(kù)函數(shù)版本

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread('pitt1.jpg')
rows,cols,ch=image.shape
#拆分通道,cv2.split()是一個(gè)比較耗時(shí)的操作。只有需要時(shí)使用,盡量Numpy
b,g,r=cv2.split(image)
print b.shape
#(768,1024)
#合并通道
image=cv2.merge(b,g,r)

使用Numpy索引版本:

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread('pitt1.jpg')
rows,cols,ch=image.shape
#直接獲取
b=img[:,:,0]

以上這篇Python-OpenCV基本操作方法詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pytorch常用的維度轉(zhuǎn)換方法

    Pytorch常用的維度轉(zhuǎn)換方法

    在PyTorch中,我們經(jīng)常需要處理多維數(shù)據(jù),如張量tensors,這篇文章主要介紹了一些Pytorch常用的維度轉(zhuǎn)換方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • python 請(qǐng)求服務(wù)器的實(shí)現(xiàn)代碼(http請(qǐng)求和https請(qǐng)求)

    python 請(qǐng)求服務(wù)器的實(shí)現(xiàn)代碼(http請(qǐng)求和https請(qǐng)求)

    本篇文章主要介紹了python 請(qǐng)求服務(wù)器的實(shí)現(xiàn)代碼(http請(qǐng)求和https請(qǐng)求),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python機(jī)器學(xué)習(xí)混淆矩陣及confusion?matrix函數(shù)使用

    python機(jī)器學(xué)習(xí)混淆矩陣及confusion?matrix函數(shù)使用

    這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)混淆矩陣confusion_matrix函數(shù)使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python中fnmatch模塊的使用詳情

    Python中fnmatch模塊的使用詳情

    這篇文章主要介紹了Python中fnmatch模塊的使用詳情,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • python簡(jiǎn)單實(shí)現(xiàn)旋轉(zhuǎn)圖片的方法

    python簡(jiǎn)單實(shí)現(xiàn)旋轉(zhuǎn)圖片的方法

    這篇文章主要介紹了python簡(jiǎn)單實(shí)現(xiàn)旋轉(zhuǎn)圖片的方法,涉及Python中image模塊使用技巧,需要的朋友可以參考下
    2015-05-05
  • 20行Python代碼實(shí)現(xiàn)一款永久免費(fèi)PDF編輯工具的實(shí)現(xiàn)

    20行Python代碼實(shí)現(xiàn)一款永久免費(fèi)PDF編輯工具的實(shí)現(xiàn)

    這篇文章主要介紹了20行Python代碼實(shí)現(xiàn)一款永久免費(fèi)PDF編輯工具的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 在Pycharm中自動(dòng)添加時(shí)間日期作者等信息的方法

    在Pycharm中自動(dòng)添加時(shí)間日期作者等信息的方法

    今天小編就為大家分享一篇在Pycharm中自動(dòng)添加時(shí)間日期作者等信息的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • pycharm + django跨域無(wú)提示的解決方法

    pycharm + django跨域無(wú)提示的解決方法

    這篇文章主要給大家介紹了關(guān)于pycharm + django跨域無(wú)提示的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 使用Python生成新春煙花效果的方法

    使用Python生成新春煙花效果的方法

    新春佳節(jié)到來(lái)之際,煙花的璀璨綻放象征著喜慶和熱鬧,如果能通過(guò)代碼在屏幕上生成煙花效果,既能增加節(jié)日的趣味,也能加深對(duì)編程的理解,本篇博客將詳細(xì)介紹如何使用Python生成新春煙花效果,包括實(shí)現(xiàn)原理、代碼解析以及常見(jiàn)問(wèn)題的解決方案,需要的朋友可以參考下
    2025-01-01
  • 在Windows下安裝配置CPU版的PyTorch的方法

    在Windows下安裝配置CPU版的PyTorch的方法

    這篇文章主要介紹了在Windows下安裝配置CPU版的PyTorch的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04

最新評(píng)論

蓬安县| 赤峰市| 平武县| 三门县| 赫章县| 宿松县| 沙洋县| 高陵县| 芷江| 邯郸县| 休宁县| 庐江县| 临高县| 名山县| 东兴市| 旺苍县| 孟州市| 建湖县| 饶河县| 东阿县| 金华市| 都匀市| 保山市| 越西县| 如东县| 博客| 资中县| 兰考县| 新田县| 牙克石市| 呼伦贝尔市| 张掖市| 彭阳县| 吉林市| 堆龙德庆县| 东源县| 马公市| 林州市| 安康市| 虞城县| 徐水县|