gpt4 book ai didi

python - Hough Circles打开简历错误

转载 作者:行者123 更新时间:2023-12-02 16:17:09 25 4
gpt4 key购买 nike

我目前在HoughCircles上使用computer-vision,但无法使其正常工作。
如何解决此错误?

Error : 
'Traceback (most recent call last):
File "F:\TIPE ENTROPIE\Programmation\Iris-Recognition-master\Iris Code\norm.py", line 82, in <module>
extract_iris(img)
File "F:\TIPE ENTROPIE\Programmation\Iris-Recognition-master\Iris Code\norm.py", line 53, in extract_iris
cord = get_circle(img, 35, 0, 50, 40)
File "F:\TIPE ENTROPIE\Programmation\Iris-Recognition-master\Iris Code\norm.py", line 14, in get_circle
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT,1,20, param1=p1,param2=p2,minRadius=minR,maxRadius=maxR)
cv2.error: C:\projects\opencv-python\opencv\modules\imgproc \src\hough.cpp:1494: error: (-215) !_image.empty() && _image.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3)) && (_image.isMat() || _image.isUMat()) in function cv::HoughCircles`

这是我的代码:
import cv2 
import numpy as np

## Definitions

def get_circle(img, minR, maxR, p1, p2):

circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT,1,20, param1=p1,param2=p2,minRadius=minR,maxRadius=maxR)
circles = np.uint16(np.around(circles))

#return the first circle
return circles[0][0]

def print_img(img,x,y,w,h):
if w!=0 and h!=0:
cv2.imshow('detected circles',img[x:x+w,y:y+h])
cv2.imwrite('app-1/1.jpg',img[x:x+w,y:y+h])
else:
cv2.imshow('detected circles',img)
cv2.imwrite('app-1/1.jpg',img)
cv2.waitKey(0)

cv2.destroyAllWindows()

def reject_out(img, xc, yc, r):
row = len(img)
col = len(img[0])

for x in range(0,row):
for y in range(0, col):
res = (x-xc)*(x-xc) + (y-yc)*(y-yc)
if res > r*r :
img[x][y] = 0

def reject_in(img, xc, yc, r):
xs = xc-r
ys = yc-r

for x in range(xs,xs+2*r):
for y in range(ys, ys+2*r):
res = (x-xc)*(x-xc) + (y-yc)*(y-yc)
if res < r*r :
img[x][y] = 0

def extract_iris(img):
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
cord = get_circle(cimg, 35, 0, 50, 40)
# draw the outer circle
cv2.circle(cimg,(cord[0],cord[1]),cord[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(cord[0],cord[1]),2,(0,0,255),3)


h = 2*cord[2]
w = 2*cord[2]
x = cord[1]-cord[2]
y = cord[0]-cord[2]
nimg = img[x:x+w,y:y+h]
reject_out(nimg, h/2, w/2, h/2)
print_img(cimg,0,0,0,0)

cord = get_circle(nimg, 0, cord[2]-1, 50, 30)
print (nimg[0:w][cord[0]])
# draw the outer circle
cv2.circle(nimg,(cord[0],cord[1]),cord[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(nimg,(cord[0],cord[1]),2,(0,0,255),3)
reject_in(nimg, cord[1], cord[0], cord[2])
print_img(nimg,0,0,0,0)
print (nimg[0:w][cord[0]])



img = cv2.imread('test6.jpg',0)
img = cv2.medianBlur(img,5)
extract_iris(img)
`

更新:
新错误:
Traceback (most recent call last):
File "F:\TIPE ENTROPIE\Programmation\essai.py", line 80, in <module>
extract_iris(img)
File "F:\TIPE ENTROPIE\Programmation\essai.py", line 49, in extract_iris
cord = get_circle(cimg, 35, 0, 50, 40)
File "F:\TIPE ENTROPIE\Programmation\essai.py", line 8, in get_circle
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:11111: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor

最佳答案

正如@ jeru-luke在评论中告诉的那样,您应该在调用img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)之前添加cv2.HoughCircles():

def get_circle(img, minR, maxR, p1, p2):
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # <------------- Here

circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT,1,20, param1=p1,param2=p2,minRadius=minR,maxRadius=maxR)
circles = np.uint16(np.around(circles))

COLOR_BGR2GRAY 而不是 COLOR_GRAY2BGR

更新:

在第二次调用 nimg = cv2.cvtColor(nimg, cv2.COLOR_GRAY2BGR)之前添加 get_circle:

更新2
import cv2
import numpy as np

## Definitions

def get_circle(img, minR, maxR, p1, p2):
if len(img.shape)==3:
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT,1,20, param1=p1,param2=p2,minRadius=minR,maxRadius=maxR)
circles = np.uint16(np.around(circles))

#return the first circle
return circles[0][0]

def print_img(img,x,y,w,h):
if w!=0 and h!=0:
cv2.imshow('detected circles',img[x:x+w,y:y+h])
cv2.imwrite('app-1/1.jpg',img[x:x+w,y:y+h])
else:
cv2.imshow('detected circles',img)
cv2.imwrite('app-1/1.jpg',img)
cv2.waitKey(0)

cv2.destroyAllWindows()

def reject_out(img, xc, yc, r):
row = len(img)
col = len(img[0])

for x in range(0,row):
for y in range(0, col):
res = (x-xc)*(x-xc) + (y-yc)*(y-yc)
if res > r*r :
img[x][y] = 0

def reject_in(img, xc, yc, r):
xs = xc-r
ys = yc-r

for x in range(xs,xs+2*r):
for y in range(ys, ys+2*r):
res = (x-xc)*(x-xc) + (y-yc)*(y-yc)
if res < r*r :
img[x][y] = 0

def extract_iris(img):
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
cord = get_circle(cimg, 35, 0, 50, 40)
# draw the outer circle
cv2.circle(cimg,(cord[0],cord[1]),cord[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(cord[0],cord[1]),2,(0,0,255),3)


h = 2*cord[2]
w = 2*cord[2]
x = cord[1]-cord[2]
y = cord[0]-cord[2]
nimg = img[x:x+w,y:y+h]

reject_out(nimg, h/2, w/2, h/2)
print_img(cimg,0,0,0,0)

nimg = cv2.cvtColor(nimg, cv2.COLOR_GRAY2BGR)
cord = get_circle(nimg, 0, cord[2]-1, 50, 30)
print (nimg[0:w][cord[0]])
# draw the outer circle
cv2.circle(nimg,(cord[0],cord[1]),cord[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(nimg,(cord[0],cord[1]),2,(0,0,255),3)
reject_in(nimg, cord[1], cord[0], cord[2])
print_img(nimg,0,0,0,0)
print (nimg[0:w][cord[0]])



img = cv2.imread('test6.jpg',0)
img = cv2.medianBlur(img,5)
extract_iris(img)

结果:

enter image description here

关于python - Hough Circles打开简历错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50364235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com