OpenCV for Python 學習 (一 繪圖函數)

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   os   io   for   

本人的學習筆記主要記錄的是學習opencv-python-tutorials這本書中的筆記

今天晚上簡單學習OpenCV for Python如何繪圖,主要用了這幾個函數(這幾個函數可在:http://docs.opencv.org/modules/core/doc/drawing_functions.html 找到):

cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]]) cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]]) cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) 

一開始自己照抄書上代碼,代碼如下:

import numpy as npimport cv2img = np.zeros((512,512,3), np.uint8)img = cv2.line(img, (1,1),(510,510), (255,0,0),5)img = cv2.rectangle(img, (200,100), (100,200), (0,255,0), 3)img = cv2.circle(img, (100,100), 63, (0,0,255), -1)img = cv2.ellipse(img, (256,256), (100,50), 0, 0, 180, 255, -1)cv2.imshow(‘hello‘, img)cv2.waitKey(0)cv2.destroyAllWindows()

總是在運行到cv2.imshow()這出錯,錯誤碼:

error: (-215) size.width>0 && size.height>0 in function imshow

大致意思是要求img的尺寸必須是大於0的,可是書上是這麼寫的啊?

回想在C裡面用OpenCV繪圖時,直接調用繪圖函數即可,貌似不需要加傳回值,於是自己嘗試著去掉傳回值,每次都是直接在img上繪圖,沒有傳回值

cv2.line(img, (1,1),(510,510), (255,0,0),5)cv2.rectangle(img, (200,100), (100,200), (0,255,0), 3)cv2.circle(img, (100,100), 63, (0,0,255), -1)cv2.ellipse(img, (256,256), (100,50), 0, 0, 180, 255, -1)

果然就可以了

自己想了想,如果將傳回值賦值img,那麼img表示的應該是繪圖是否成功的標誌,而不是img本身了

上網搜了搜,在:http://docs.opencv.org/modules/core/doc/drawing_functions.html 找到了官網的注釋,說這些函數的傳回值都是None(難怪不能imshow)

這個問題解決了,開始繪製多邊形

加了下面的代碼:

pts = np.array([[10,5], [34,23],[231,54], [76,98]], np.uint8)pts = pts.reshape((-1,1,2))cv2.polylines(img, [pts], True, (0,255,255))

又出錯。。

error: (-215) p.checkVector(2, CV_32S) >= 0 in function polylines

google之,http://stackoverflow.com/questions/11270250/what-does-the-python-interface-to-opencv2-fillpoly-want-as-input 解決方案如下:

將最後一行改成如下形式:

cv2.polylines(img, np.array([pts], np.int32), True, (0,255,255))

將[pts]轉換成32int的numpy.array類型,就好了

至於此處的問題,大家自己理解吧,我這說不清楚

今天第一天,並沒有多少硬貨。加油!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.