使用霍夫变换检测圆圈

时间:2016-05-30 11:45:04

标签: python c++ opencv

我在python中有下一个代码

import cv2
import numpy as np

img = cv2.imread('2.png',0)    
cv2.imshow('detected circles',img)    
img = cv2.medianBlur(img,5)    
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)    
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
                            param1=30,param2=30,minRadius=0,maxRadius=0)    

circles = np.uint16(np.around(circles))    
for i in circles[0,:]:     
    # draw the outer circle     
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)     
    # draw the center of the circle     
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)     


cv2.imshow('detected circles1',cimg)

然后当我尝试在cpp中使用相同的参数时,代码不会检测到图像中的所有cyrceles ...

我尝试了这段代码:

cv::medianBlur(mat, mat, 5);    
cv::Mat grayMat;     
cv::cvtColor(mat, grayMat, cv::COLOR_BGR2GRAY);     
std::vector<cv::Vec3f> circles1;     
cv::HoughCircles(grayMat, circles1, CV_HOUGH_GRADIENT, 1, 20, 30, 30, 0, 0); 
我正在拍摄的照片是: first one
second one

可能是什么问题?

0 个答案:

没有答案