如何使用python识别图像中是否存在实心圆?

时间:2015-04-01 00:26:30

标签: python image-recognition

我正在用Python编写代码,在图像中查找实心圆并输出圆的数量,它们的直径和x& y每个圆心的坐标。

挑战在于,有时这些圆圈的形状可能不一致,也可能不是完整的圆圈。

最简单的方法是什么?我是Python的图像处理新手。

2 个答案:

答案 0 :(得分:1)

查看OpenCV for Python!用于完成您正在寻找的东西的大量工具!

您可以通过软件包安装程序或PIP安装大多数软件包。基本上你只需要我记忆中的numpy,以及一些特定图像编解码器的库。

http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html

文档页面有一些很棒的教程,您可以遵循这些教程并适应您想要完成的任何细节。

答案 1 :(得分:0)

您想查看PIL来编辑/从图像中获取信息。你需要玩弄它才能检查是否存在圆圈,但这里有一个打开图像的例子:

>>> import Image
>>> im = Image.open("myimage.jpg")
>>> im.show

替代方案是OpenCV,它更倾向于照片检测等。

例如,要检查人脸是否在OpenCV的图像中,请使用以下代码:

import numpy as np
import cv2

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

img = cv2.imread('face.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex,ey,ew,eh) in eyes:
        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()