如opencv開發(fā)前的準(zhǔn)備工作中所說,此系列文章是在學(xué)習(xí)Practical Python and OpenCV(點(diǎn)擊下載)這本書的一些記錄,發(fā)出來的文章跳過了第三章對RGB,以及numpy簡單操作等介紹,請大家下載原書查看洒嗤,在原書中對一下段落已進(jìn)行翻譯注釋箫荡。文章系列完整展示代碼點(diǎn)擊下載
importnumpyasnp
importcv2
canvas = np.zeros((300,300,3), dtype ="uint8")
#使用np.zeros方法構(gòu)造一個300,300渔隶,3通道的RGB的numpy array
#zeros方法用初始值為零填充數(shù)組中的每個元素羔挡。
#dtype 數(shù)據(jù)類型? 8進(jìn)制(
#Since we are representing our image as an RGB image with pixels in the range [0, 255],
#it’s important that we use an 8-bit unsigned integer, or uint8. There #are many
#other data types that we can use (common ones include 32-bit integers, and 32-bit
#or 64-bit floats), but we’ll mainly be using uint8 for the majority of the examples in this book)
green = (0,255,0)#定義一個表示綠色的BGR元組
cv2.line(canvas,(0,0),(300,300),green)
#line(canvas.point1,point2,color) 畫布洁奈,起點(diǎn),終點(diǎn)绞灼,顏色
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)
red = (0,0,255)
cv2.line(canvas,(300,0),(0,300),red,3)
#line(canvas.point1,point2,color利术,thickness) 畫布,起點(diǎn)低矮,終點(diǎn)印叁,顏色,線條寬度pixels
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
運(yùn)行結(jié)果如下:
畫矩形drawing.py
cv2.rectangle(canvas,(10,10),(60,60),green)
#rectangle(canvas,point1,point2,color)畫布军掂,起點(diǎn)轮蜕,終點(diǎn),顏色
we are starting our rectangle at point (10,10)
We decide to end our rectangle at(60,60),
defining a region of50x50pixels
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
cv2.rectangle(canvas,(50,200),(200,225),red,5)
#rectangle(canvas,point1,point2,color,thickness) 畫布蝗锥,起點(diǎn)跃洛,終點(diǎn),顏色终议,線條寬度pixels
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
以上我們只繪制了一個矩形的輪廓汇竭,如何繪制一個填充滿的矩形?
我們只需要通過設(shè)置厚度參數(shù)為:-1痊剖,如下
填充矩形drawing.py
blue = (255,0,0)
cv2.rectangle(canvas,(200,50),(255,125),blue,-1)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
運(yùn)行結(jié)果如下:
canvas = np.zeros((300,300,3),dtype ="uint8")
(centerX,centerY) = (canvas.shape[1] //2,canvas.shape[0] //2)
#圖像canvas的高度可以在canvas.shape [0]和canvas.shape [1]的寬度中找到韩玩。shape [2]為圖像channels
white = (255,255,255)
forrinrange(0,175,25):
# range(start, stop[, step])
# 參數(shù)說明:
# start: 計(jì)數(shù)從 start 開始。默認(rèn)是從 0 開始陆馁。例如range(5)等價(jià)于range(0找颓, 5);
# end: 計(jì)數(shù)到 end 結(jié)束,但不包括 end叮贩。例如:range(0击狮, 5) 是[0, 1, 2, 3, 4]沒有5
# step:步長,默認(rèn)為1益老。例如:range(0彪蓬, 5) 等價(jià)于 range(0, 5, 1)
? ? cv2.circle(canvas,(centerX,centerY),r,white)
# cv2.circle(canvas,(centerX,centerY),radius,color,thickness) 畫布,起點(diǎn)捺萌,終點(diǎn)档冬,顏色,線條寬度(為-1時填充整個圖像)
運(yùn)行結(jié)果如下:
畫一個半徑桃纯,中心點(diǎn)隨機(jī)的填充多圓圖
for i in range(0,25):
???? radius = np.random.randint(5, high =200)
???? #使用np.random.randint 生成一個5到200之間的隨機(jī)數(shù)
???? color = np.random.randint(0, high =256,size=(3,)).tolist()
???? pt = np.random.randint(0, high=300, size = (2,))
???? cv2.circle(canvas,tuple(pt),radius,color,-1)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
運(yùn)行結(jié)果如下:
numpy.random.randint(low, high=None, size=None, dtype='l')
Return random integers from low (inclusive) to high (exclusive).
Return random integers from the “discrete uniform” distribution of the specified dtype in the “half-open” interval [low, high). If high is None (the default), then results are from [0, low).
Parameters:
low : intLowest (signed) integer to be drawn from the distribution (unless high=None, in which case this parameter is one above the highest such integer).
high : int, optionalIf provided, one above the largest (signed) integer to be drawn from the distribution (see above for behavior if high=None).
size : int or tuple of ints, optionalOutput shape. If the given shape is, e.g., (m, n, k), then m?n?k samples are drawn. Default is None, in which case a single value is returned.
dtype : dtype, optionalDesired dtype of the result. All dtypes are determined by their name, i.e., ‘int64’, ‘int’, etc, so byteorder is not available and a specific precision may have different C types depending on the platform. The default value is ‘np.int’.New in version 1.11.0.
Returns:
out : int or ndarray of intssize-shaped array of random integers from the appropriate distribution, or a single such random int if size not provided.
更多文章請關(guān)注我的博客:https://harveyyeung.github.io