我在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 可能是什么问题?