程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

二、opencv-python圖像處理基礎(2)

編輯:Python

文章目

目錄

前言

一、圖像的讀入和顯示和保存

章節介紹:

1、讀取圖像

2、顯示圖像

3、圖像的保存 

二、圖像的繪制

章節介紹:

1、繪制直線

2、繪制圓形

 3、繪制矩形

4、向圖像中添加文字

總結





前言

接下來,我們就進入有趣的圖像處理基礎,內容比較多,希望大家能耐住性子,把這一章比較重要的內容學完。





一、圖像的讀入和顯示和保存

章節介紹:

這裡我將會給大家介紹如何讀取圖像,如何顯示圖像和如何保存圖像。

1、讀取圖像

(1)使用的函數

        cv2.imread()

函數的參數:

  1. 要讀取的圖像路徑
  2. 讀取方式的標志
  • cv.IMREAD*COLOR:以彩色模式加載圖像,任何圖像的透明度都將被忽略。這是默認參數。

  • cv.IMREAD*GRAYSCALE:以灰度模式加載圖像

  • cv.IMREAD_UNCHANGED:包括alpha通道的加載圖像模式。

     可以使用1/0或者-1來替代上邊三個標志

(2)參考代碼

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('123.png', 0)

函數解析:前兩行是導入函數的使用包,cv2即是我們下載的opencv-python,matplotlib 函數也是一個可視化函數,具體下載方式不具體闡述,後面我們會使用到。 

第三行代碼的意思是將路徑中的圖片讀取,以灰度圖的形式讀入函數(0表示以灰度圖的方式讀入。)。

注意:以上代碼如果路徑有錯,則不會報錯,只會放回一個None值

2、顯示圖像

(1)使用函數

        cv2.imshow()

參數:

  • 顯示圖像的窗口名稱,以字符串類型表示
  • 要加載的圖像

注意:在調用顯示圖像的API後,要調用cv.waitKey()給圖像繪制留下時間,否則窗口會出現無響應情況,並且圖像無法顯示出來

(2)參考代碼:

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('123.png', 0)
cv2.imshow('img',img)
cv2.waitKey(0)
# matplotlib中展示
plt.imshow(img)
plt.show()

代碼解析:cv2.imshow('img', img)第一個參數是顯示圖像的名稱,第二個參數是圖像的本體。

cv2.waitKey()函數中,如果參數是0,則只有在選中圖像的時候,按下鍵盤上任意鍵,函數才會停止。如果參數是大於0的數字,則相當於延時函數,延時單位為毫秒。

(3)函數執行效果

3、圖像的保存 

(1)使用的函數

        cv2.imwrite()

參數:

  • 文件名,要保存在哪裡
  • 要保存的圖像

(2)參考代碼:

cv.imwrite('messigray.png',img)

代碼解析:打開輸入的路徑,如果圖片沒有問題,則已經正常保存成功。

二、圖像的繪制

章節介紹:

這一章是目標識別和目標追蹤中一定會使用到的, 因為在之後的識別或者追蹤中,如果我們想要可視化出識別或者追蹤的結果,就必須使用畫框和插入文字函數,比較重要,希望大家能夠理解。




1、繪制直線

(1)使用的函數

        cv2.line(img, start, end, color, thickness)

參數:

  • img:要繪制直線的圖像
  • Start,end: 直線的起點和終點
  • color: 線條的顏色
  • Thickness: 線條寬度

(2)參考代碼

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('123.png')
cv2.line(img, (0,0), (900, 900), (0, 255, 0), 3)
cv2.imshow('img',img)
cv2.waitKey(0)

 代碼解析:坐標系的中心是在左上角,右下角的坐標是(900, 900)【已經超越了顯示的維度】,顏色表可以從網上找到,3表示線條寬度。

 (3)執行效果




2、繪制圓形

(1)使用函數:

cv2.circle(img, centerpoint, r, color, thickness)

參數:

  • img:要繪制圓形的圖像
  • Centerpoint, r: 圓心和半徑
  • color: 線條的顏色
  • Thickness: 線條寬度,為-1時生成閉合圖案並填充顏色

(2)代碼示例:

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('123.png')
cv2.circle(img, (100, 100), 90, (0, 0, 255), 3)
cv2.imshow('img',img)
cv2.waitKey(0)

代碼解析:(100, 100)表示由上向下的坐標,90表示半徑,(0, 0, 255)表示顏色, 3表示線條寬度。

(3)執行效果

 3、繪制矩形

(1)使用函數:

cv.rectangle(img,leftupper,rightdown,color,thickness)

參數:

  • img:要繪制矩形的圖像
  • Leftupper, rightdown: 矩形的左上角和右下角坐標
  • color: 線條的顏色
  • Thickness: 線條寬度

(2)代碼示例:

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('123.png')
cv2.rectangle(img, (100, 100), (300, 300), (0, 0, 255) ,3)
cv2.imshow('img',img)
cv2.waitKey(0)

(3)執行效果

4、向圖像中添加文字

 (1)使用函數:

cv.putText(img,text,station, font, fontsize,color,thickness,cv.LINE_AA)

參數:

  • img: 圖像
  • text:要寫入的文本數據
  • station:文本的放置位置
  • font:字體【cv2.FONT_HERSHEY_SIMPLEX】【cv2.FONT_HERSHEY_PLAIN】
  • 【cv2.FONT_HERSHEY_DUPLEX】【FONT_HERSHEY_COMPLEX】
  • 【cv2.FONT_HERSHEY_TRIPLEX】【cv2.FONT_HERSHEY_COMPLEX_SMALL】
  • 【字體太多了,就不一一舉例了^_^】
  • Fontsize :字體大小

(2)示例代碼:

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('123.png')
cv2.putText(img, "I am a pig", (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255) ,3, cv2.LINE_AA)
cv2.imshow('img',img)
cv2.waitKey(0)

代碼解析:略(^_^)

(3)執行效果:





總結

本文對圖像的讀入、繪畫做了一個比較詳細的闡述和代碼分析,接下來我們會在幾何變換和形態學的方向對圖像進行一系列的操作,敬請期待!!(主要是寫的多了,比較影響閱讀)


  1. 上一篇文章:
  2. 下一篇文章:
相關文章
    没有相关文章
Copyright © 程式師世界 All Rights Reserved