目錄
1. 安裝配置
2. OpenCV 基礎語法
(1)讀取影像并顯示
(2)調整顯示視窗大小
(3)調整影像尺寸大小
(4)影像灰度處理
3. 幾何圖形繪制
(1)繪制線段
(2)繪制矩形
(3)繪制圓形
(4)繪制橢圓
(5)添加文本
總結
1. 安裝配置
打開 Pycharm --> 點擊 File --> 點擊 Settings

點擊 Project Interpreter --> 點擊 + 號

搜索 OpenCV 選擇合適的進行安裝即可

2. OpenCV 基礎語法
(1)讀取影像并顯示
代碼如下:
我都進行了注釋,以大家的聰明才智我想是小菜一碟
import cv2 # 呼叫opencv包
img = cv2.imread('E:\Python\StudyOfOpencv\琪琳.jpeg') #讀取影像位置
cv2.namedWindow("demo") #對顯示影像的視窗進行命名
cv2.imshow("demo", img) #顯示影像
cv2.waitKey(delay = 0) #無限期等待下一個命令
運行上面所示的代碼(當然讀取影像路徑要和你的影像存盤位置一致)
我們可以得出,,,,報錯了!!
報錯內容如下
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sn_xpupm\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
其實這是因為我們的存盤路徑中包含中文導致的,把影像命名為英文并修改路徑即可
import cv2 # 呼叫opencv包
img = cv2.imread('E:\Python\StudyOfOpencv\qilin.jpeg') #讀取影像位置
cv2.namedWindow("demo") #對顯示影像的視窗進行命名
cv2.imshow("demo", img) #顯示影像
cv2.waitKey(delay = 0) #無限期等待下一個命令
然后我們按回車鍵就可以退出當前的視窗
至于按下回車就可以退出視窗與我們前面設定的 delay 有關
delay > 0:視窗等待delay 毫秒;
delay < 0:等待鍵盤單擊;
delay = 0:無限期等待;
(2)調整顯示視窗大小
從顯示出來的影像我們可以看出,視窗的尺寸過大,導致整個螢屏都沒辦法完全顯示出來,所以我們要嘗試改變視窗的尺寸并進行顯示
改變視窗大小使用的是函式:
cv2.resizeWindow("windowname", width, height)
得到效果如下,注意是對視窗尺寸大小進行調整而不是影像尺寸大小

(3)調整影像尺寸大小
此處參考: Opencv-python(cv2)改變影像尺寸的cv2.resize()函式
上面修改視窗的尺寸后雖然有效果,但影像的大小不進行修改則會對顯示的影像進行截取,沒辦法讓我們觀察到完整的影像
調整影像的大小,我們主要使用到的函式是 cv2.resize() ,對其一些引數進行調整,得到想要的影像
data = cv2.resize(img, dsize = None, fx = 0.5, fy = 0.5,interpolation = cv2.INTER_LINEAR) #將顯示的影像寬和高都變為一半
cv2.imshow("demo", data) #顯示影像
運行后就可以得到如下的影像:

(4)影像灰度處理
import cv2 # 呼叫opencv包
img = cv2.imread('E:\Python\StudyOfOpencv\qilin.jpeg') #讀取影像位置
cv2.namedWindow("demo") #對顯示影像的視窗進行命名
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #對影像進行灰度處理
cv2.imshow("demo", img_gray) #顯示灰度影像
cv2.waitKey(delay = 0) #無限期等待下一個命令
其中下面指出的這一句代碼
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #對影像進行灰度處理
它是對影像的通道進行修改,如果需要加強學習的可以參考:cvCvtColor函式
得到如下的灰度影像

3. 幾何圖形繪制
(1)繪制線段
使用 cv2.line() 函式就可以繪制線段
import cv2 # 呼叫opencv包
import numpy as np
img1 = np.ones((500, 500, 3), np.uint8) #創建一張影像
cv2.line(img1, (140, 160), (140, 320), (0, 0, 255), 3, cv2.LINE_AA) #繪制線段
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
得到下面的影像:
然后我們對代碼進行簡單修改,觀察影像發生的改變:
import cv2 # 呼叫opencv包
import numpy as np
img1 = np.ones((500, 500, 3), np.uint8) #創建一張影像
cv2.line(img1, (140, 160), (140, 320), (0, 255, 0), 3, cv2.LINE_AA) #繪制線段
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
觀察上面兩處代碼的不同,注意在 cv 庫中改變顏色是 BGR 而不是 RGB
如果想對影像顏色進行調整,可以參考下面的文章:
RGB顏色表
下面整個活兒:
img1 = np.ones((500, 500, 3), np.uint8) #創建一張影像
cv2.line(img1, (120, 40), (300, 40), (255, 0, 0), 3, cv2.LINE_AA)
cv2.line(img1, (300, 40), (290, 180), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段
cv2.line(img1, (195, 50), (185, 190), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段
cv2.line(img1, (185, 190), (320, 190), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段
cv2.line(img1, (320, 190), (310, 340), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段
cv2.line(img1, (310, 340), (290, 320), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段
cv2.line(img1, (120, 280), (280, 265), (255, 0, 0), 3, cv2.LINE_AA) #繪制線段
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
(2)繪制矩形
首先像上面演示的那樣可以根據線段的起點和終點繪制矩形
也可以使用 cv2.rectangle(影像,矩形左上角坐標,矩形右下角坐標,顏色) 函式進行矩形的繪制:
cv2.rectangle(img1, (100, 200), (280, 280), (0, 255, 0), 3, cv2.LINE_AA)
cv2.rectangle(img1, (80, 180), (300, 300), (0, 255, 0), 3, cv2.LINE_AA)
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
(3)繪制圓形
繪制圓只要知道其圓心坐標和半徑就可以了
使用 cv2.circle(影像,圓心坐標,半徑,顏色,是否填充) 就可以繪制圓了
cv2.circle(img1, (250, 250), 100, (0, 0, 255), -1) #-1代表進行填充
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
(4)繪制橢圓
使用 cv2.ellipse(影像,圓心坐標,長軸&短軸,起始角度,終止角度,顯示弧長的角度,顏色,是否填充)就可以了
cv2.ellipse(img1, (256, 256), (100, 50), 0, 0, 360, (0, 255, 0), -1)
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)

(5)添加文本
使用 cv2.puttext(影像,繪制的文字,位置,字體,縮放,顏色,線寬) 就可以進行文本的添加了
下面在上圖中添加文本
cv2.putText(img1, 'OpenCV', (230, 450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)
總結
這篇文章主要介紹了 OpenCv 中的幾個基礎語法(讀取影像、顯示影像、改變影像大小等)以及繪制一些簡單的幾何影像(線段、圓形、橢圓、矩形等),為后面的學習打下基礎
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/312254.html
標籤:其他
