首頁>技術>

二、瞭解OpenCV的繪圖方法2.1 瞭解直線繪圖方法

我們在前兩節中有了解使用OpenCV中的矩形繪製,接下來我們瞭解一下更多的圖形繪製方法。我們在OpenCV中若需要繪製直線需要使用line方法,line方法的原型如下:

cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
其中img表示需要在哪一張圖片上進行繪圖pt1表示起始點位置pt2表示終點位置color表示需要繪製的顏色thickness表示需要繪製的線段寬度lineType表示線段的型別,可以為8、 4以及CV_AA shift表示座標點的小數點位

我們先建立一張圖片:

import cv2import numpy as npimg=np.zeros((400,400,3), np.uint8)

以上建立了一張400*400的3通道圖片資料,並且將圖片顏色賦予為純黑。我們可以顯示一下:

cv2.imshow("Image", img)cv2.waitKey (0)cv2.destroyAllWindows()

隨後我們使用line方法在當前圖片上進行繪圖。

cv2.line(img,(0,0),(400,400),(255,0,0),2)

以上使用line方法,傳入img表示在img圖片上進行繪圖,繪圖的起始點位置為(0,0),終點位置是(400,400),然後繪製的顏色純白色(255,255,255),線段粗細為2個單位。我們來看一下繪製的效果:

我們可以更改rgb值對線段的顏色進行更改:

cv2.line(img,(0,0),(400,400),(124,252,0),2)

以上改為黃青色,結果如下:

再試試更改繪製的起始座標與終點座標:

cv2.line(img,(200,200),(350,350),(124,252,0),2)
2.2 瞭解矩形繪圖方法

矩形繪圖我們在前兩節有過了瞭解,使用的是rectangle方法。rectangle方法與line方法引數類似,引數都是接收一個圖片、起始繪製座標、終點座標、繪製顏色、繪製線段粗細。程式碼如下:

cv2.rectangle(img,(384,0),(350,350),(0,255,0),3)

以上方法在img圖片上繪製矩形,起始座標是(384,0)、終點座標是(350,350),繪製顏色是(0,255,0),線段粗細為3。結果如下:

2.3 瞭解圓形繪圖方法

在opencv中繪製圓形需要使用circle方法,circle方法的引數和直線line方法、矩形rectangle方法所接收的引數有所區別。circle方法的原型如下:

cv2.circle(img, center_coordinates, radius, color, thickness)
circle方法接收img作為圖片引數center_coordinates為圓的中心座標radius是圓形的半徑color表示繪製圓形的顏色thickness表示線段的粗細

程式碼如下:

cv2.circle(img,(200,200),63, (0,0,255),1)

以上程式碼img為需要繪製的圖片,(200,200)為繪製的中心座標,63為繪製的半徑,(0,0,255)為繪製的顏色,1為線段的粗細。

那如何進行形狀的填充呢?只需要將線段的粗細1改為負一就可以將這個原型給填充顏色。

cv2.circle(img,(200,200),63, (0,0,255),-1)

結果如下:

其實我們的矩形把線段改為-1也可以進行填充:

cv2.rectangle(img,(384,0),(350,350),(0,255,0),-1)

我們不僅可以畫圓形也可以畫橢圓,橢圓使用ellipse方法,ellipse原型如下:

cv2.ellipse(image, centerCoordinates, axesLength, angle, startAngle, endAngle, color [, thickness[, lineType[, shift]]])
image為繪製的影象centerCoordinates為橢圓的中心座標axesLength有兩個變數,包含橢圓長軸和短軸angle為橢圓的旋轉角度startAngle為橢圓弧的起始角度endAngle為橢圓弧的終止角度color為繪製顏色thickness為繪製的線段粗細lineType為邊界型別shift為中心座標中的小數位

程式碼為:

cv2.ellipse(img, (200, 200), (170, 130), 0, 0, 360, (255, 255, 255), 3)

結果為:

26
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Python一題多解學思路:指定列前置