Trăn cv2.circle

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách vẽ hình tròn trên hình ảnh bằng OpenCV Python. Điều này có thể hữu ích khi chúng ta muốn phát hiện một đối tượng trong ảnh. Chúng ta sẽ thảo luận về các kỹ thuật được sử dụng để vẽ một vòng tròn. Vì vậy, hãy bắt đầu hướng dẫn

Để sử dụng các phương pháp sau, đảm bảo rằng bạn đã cài đặt tất cả các thư viện cho OpenCV

Sử dụng cv2. khoanh tròn[]

Phương pháp này được sử dụng chủ yếu để vẽ các vòng tròn. Phương thức này có 7 đối số. Năm trong số chúng được sử dụng

hình ảnh. Hình ảnh đầu vào mà vòng tròn sẽ được vẽ

tâm_tọa độ. Các giá trị cho x và y phải được chỉ định trong ký hiệu tuple

bán kính. Bán kính của hình tròn cần vẽ

màu. Màu của hình tròn cần vẽ. Các giá trị được chỉ định dưới dạng ký hiệu ba bộ ở dạng BGR

Đường tròn bao nhỏ nhất [đường tròn] của một vật thể là đường tròn bao hoàn toàn vật thể đó với diện tích nhỏ nhất. Chúng ta có thể tìm vòng tròn bao quanh nhỏ nhất của một đối tượng bằng hàm cv2. minEnclosingCircle[]

cú pháp

Cú pháp của hàm này là -

[x,y],radius = cv2.minEnclosingCircle[cnt]

Trong đó, "cnt" là các điểm đường viền. Nó được biểu diễn dưới dạng một mảng các điểm đường viền

Đầu ra - Nó trả về tọa độ của tâm [x, y] và bán kính của vòng tròn bao quanh tối thiểu. [x,y] và bán kính là float dtype. Vì vậy, để vẽ một vòng tròn trên hình ảnh, chúng tôi chuyển đổi chúng thành số nguyên

Để vẽ một đường tròn bao quanh nhỏ nhất, chúng ta sử dụng chức năng giống như chức năng vẽ đường tròn trên ảnh −

cv2.circle[img,center,radius,[0,255,0],2]

bước

Bạn có thể sử dụng các bước sau để tìm đường tròn bao quanh nhỏ nhất của một đối tượng –

Nhập thư viện cần thiết. Trong tất cả các ví dụ Python sau, thư viện Python bắt buộc là OpenCV. Hãy chắc chắn rằng bạn đã cài đặt nó

import cv2

Đọc hình ảnh đầu vào bằng cv2. imread[] và chuyển nó sang thang độ xám. Ở đây chúng tôi đang tải một hình ảnh có bốn điểm sao. png

img = cv2.imread['fourpoint-star.png']
gray = cv2.cvtColor[img, cv2.COLOR_BGR2GRAY]

Áp dụng phân ngưỡng trên ảnh thang độ xám để tạo ảnh nhị phân. Điều chỉnh đối số thứ hai để phát hiện đường viền tốt hơn

ret,thresh = cv2.threshold[gray,150,255,0]

Tìm các đường viền trong ảnh bằng cv2. hàm findContours[]

contours, _ = cv2.findContours[thresh,  cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE]

Chọn một đường viền cnt hoặc lặp qua tất cả các đường viền. Tìm vòng tròn bao quanh tối thiểu cho cnt đường viền bằng cách sử dụng cv2. hàm minEnclosingCircle[cnt]

cnt = contours[0]
[x,y],radius = cv2.minEnclosingCircle[cnt]

Vẽ đường tròn bao quanh nhỏ nhất trên hình ảnh đầu vào đi qua tâm và bán kính cho hàm bên dưới. Đối số thứ ba và thứ tư là màu sắc và độ dày của hình tròn được vẽ

center = [int[x],int[y]]
radius = int[radius]
cv2.circle[img,center,radius,[0,255,0],2]

Hiển thị hình ảnh với Convex Hull đã vẽ

________số 8

Hãy xem xét một số ví dụ để hiểu rõ hơn

ví dụ 1

Trong chương trình Python bên dưới, chúng tôi phát hiện đường viền của một đối tượng trong ảnh và tìm vòng tròn bao quanh tối thiểu của đối tượng. Chúng tôi cũng vẽ vòng tròn bao quanh tối thiểu trên hình ảnh đầu vào

Chúng tôi sẽ sử dụng hình ảnh này làm Tệp đầu vào trong chương trình này -

đầu ra

Khi bạn thực thi đoạn mã trên, nó sẽ tạo ra đầu ra sau -

Number of contours detected: 1

Và, chúng tôi nhận được cửa sổ đầu ra sau -

Vòng tròn bao quanh tối thiểu của đối tượng được phát hiện được vẽ bằng màu xanh lá cây

ví dụ 2

Trong ví dụ này, chúng tôi phát hiện các đường viền của các đối tượng trong ảnh và tìm vòng tròn bao quanh tối thiểu của các đối tượng. Chúng tôi cũng vẽ tất cả các vòng tròn bao quanh tối thiểu trên hình ảnh đầu vào

Có nhiều loại sự kiện nàng thơ khác nhau như nhấp chuột trái hoặc phải, di chuyển chuột, nhấp đúp vào nút trái, v.v. OpenCV cung cấp cho chúng ta các loại sự kiện chuột khác nhau như cv2. EVENT_LBUTTONDOWN cho nút chuột trái xuống, cv2. EVENT_RBUTTONDOWN cho nút xuống bên phải, cv2. EVENT_LBUTTONDBLCLK cho nhấp đúp vào nút trái và các nút khác

Sự kiện chuột trả về tọa độ [x,y] của sự kiện chuột. Để thực hiện một hành động khi một sự kiện xảy ra, chúng tôi xác định chức năng gọi lại chuột. Chúng tôi sử dụng các sự kiện chuột để vẽ các vòng tròn trên hình ảnh

bước

Để vẽ vòng tròn bằng các sự kiện chuột, hãy làm theo các bước dưới đây -

  • Nhập thư viện yêu cầu OpenCV. Hãy chắc chắn rằng bạn đã cài đặt nó

  • Tạo một hình ảnh màu đen. Chúng tôi vẽ các vòng tròn trên hình ảnh màu đen này. Chúng tôi cũng đọc một hình ảnh bằng cách sử dụng cv2. imread[] để vẽ các vòng tròn trên đó

  • Xác định chức năng gọi lại chuột để vẽ một vòng tròn trên hình ảnh. Hàm gọi lại chuột được thực thi khi xảy ra sự kiện chuột. Một sự kiện chuột đưa ra tọa độ của sự kiện chuột. Ở đây chúng tôi xác định chức năng gọi lại chuột để vẽ một vòng tròn khi nút chuột trái bị hỏng

  • Tạo một cửa sổ và liên kết chức năng gọi lại chuột với cửa sổ này

  • Hiển thị cửa sổ hình ảnh. Cửa sổ này mở hình ảnh mà chúng ta vẽ hình tròn. Để đóng cửa sổ nhấn nút esc

Hãy xem xét một số ví dụ về chương trình để hiểu cách thức hoạt động của nó

Ví dụ

Trong chương trình Python này, chúng tôi vẽ các vòng tròn khi nhấn nút bên trái của chuột

Khi bạn thực thi đoạn mã Python trên, nó sẽ mở ra một cửa sổ hiển thị hình ảnh đầu vào. Để vẽ một vòng tròn đầy trong hình ảnh, hãy nhấp đúp vào [EVENT_LBUTTONDBLCLK] tại một điểm trong hình ảnh

Làm cách nào để vẽ một vòng tròn trong Python?

Bây giờ để vẽ hình tròn bằng rùa, chúng ta sẽ sử dụng một hàm được xác định trước trong “rùa”. hình tròn[bán kính]. Hàm này vẽ một đường tròn có bán kính cho trước bằng cách lấy vị trí “con rùa” làm tâm . Ví dụ. Python3.

Làm cách nào để phát hiện các vòng kết nối trong OpenCV Python?

cú pháp. cv2. HoughCircles[image, method, dp, minDist] Trong đó Image là tệp hình ảnh được chuyển đổi thành thang độ xám Method là thuật toán được sử dụng để phát hiện các vòng tròn. Dp là tỷ lệ nghịch đảo của độ phân giải bộ tích lũy với độ phân giải hình ảnh

Vòng tròn CV hoạt động như thế nào?

Hoạt động của hàm circle[] trong OpenCV . Tham số tọa độ x và tọa độ y biểu thị tọa độ tâm của đường tròn cần vẽ trên hình đã cho. Tham số bán kính là bán kính của đường tròn cần vẽ trên hình đã cho. The parameter sourceimage is the image on which the circle is to be drawn. The parameter x coordinate and y coordinate represents the center coordinates of the circle to be drawn on the given image. The parameter radius is the radius of the circle to be drawn on the given image.

OpenCV Python và cv2 có giống nhau không?

cv2 [giao diện cũ trong các phiên bản OpenCV cũ được đặt tên là cv ] là tên mà các nhà phát triển OpenCV đã chọn khi họ tạo trình tạo liên kết . Tên này được giữ làm tên nhập để phù hợp với các loại hướng dẫn khác nhau trên internet.

Chủ Đề