Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用python opencv的OMR气泡纸扫描仪_Python 3.x_Opencv_Hough Transform_Canny Operator_Omr - Fatal编程技术网

Python 3.x 使用python opencv的OMR气泡纸扫描仪

Python 3.x 使用python opencv的OMR气泡纸扫描仪,python-3.x,opencv,hough-transform,canny-operator,omr,Python 3.x,Opencv,Hough Transform,Canny Operator,Omr,我正在使用OMR气泡纸扫描仪,使用python openCV检测正确的气泡答案。当使用下面的代码执行时,我没有得到正确的答案。谁能帮我检查一下密码,告诉我哪里出错了 我尝试了下面的URL图像 将cv2作为cv导入 将numpy作为np导入 image=cv.imread(“H:/omr\u test\u 01.png”,0) image1=cv.imread(“H:/omr\u test\u 01.png”) 正确答案=['B'、'E'、'A'、'C'、'B'] crop_img=图像[157

我正在使用OMR气泡纸扫描仪,使用python openCV检测正确的气泡答案。当使用下面的代码执行时,我没有得到正确的答案。谁能帮我检查一下密码,告诉我哪里出错了

我尝试了下面的URL图像

将cv2作为cv导入
将numpy作为np导入
image=cv.imread(“H:/omr\u test\u 01.png”,0)
image1=cv.imread(“H:/omr\u test\u 01.png”)
正确答案=['B'、'E'、'A'、'C'、'B']
crop_img=图像[157:975,42:330]
#打印(裁剪图像)
答案=[]
itr=0
对于范围(2)内的itr:
如果itr==0:
img1=作物产量(img)[0:818,0:120]
其他:
img1=作物的img[0:818167:288]
img1=cv.GaussianBlur(img1,(5,5),0)
img1=cv.Canny(IMG1100200)
img1=cv.自适应阈值(IMG1255,cv.自适应阈值平均值,cv.阈值二进制值,11,2)
img1=cv.自适应阈值(IMG1255,cv.自适应阈值平均值,cv.阈值二进制值,11,2)
img1=cv.自适应阈值(IMG1255,cv.自适应阈值平均值,cv.阈值二进制值,11,2)
img1=cv.自适应阈值(IMG1255,cv.自适应阈值平均值,cv.阈值二进制值,11,2)
img1=cv.自适应阈值(IMG1255,cv.自适应阈值平均值,cv.阈值二进制值,11,2)
img1=cv.GaussianBlur(img1,(5,5),0)
img=img1
img=等速历史(img)
cimg=cv.CVT颜色(img,cv.COLOR_GRAY2BGR)
打印(cimg)
img1=cv.Canny(IMG1100200)
img1=cv.Canny(IMG1100200)
img1=cv.Canny(img1,0255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)[1]
img1=cv.GaussianBlur(img1,(5,5,1)
img1=cv.GaussianBlur(img1,(5,5,1)
圆=cv.HOUGH圆(img,cv.HOUGH_梯度,1,10,参数1=50,参数2=50,最小半径=0,最大半径=0)
圆=np.uint16(np.around(圆))
k=0
对于圆[0,:]中的i:
等速圆(cimg,(i[0],i[1]),2,(0255,0),3)
k=k+1
cv.waitKey(0)
cv.destroyAllWindows()
对于范围(k)内的i:
答案。追加(圆圈[0][i][0]+圆圈[0][i][1]+圆圈[0][i][2])
表=len(答案)
最终答案=[]
对于范围(0,5)内的i:
j=i
ind=0
索引=ind
索引=0
max=答案[j]
对于范围(i+1)内的j:

现在能用了吗?现在能用了吗?
import cv2 as cv
import numpy as np

image = cv.imread("H:/omr_test_01.png",0)
image1 = cv.imread("H:/omr_test_01.png")
correct_answers = ['B','E','A','C','B']

crop_img = image[157:975, 42:330]
#print(crop_img)
answers = []

itr = 0

for itr in range(2):
    if itr ==0:
        img1 = crop_img[0:818, 0:120]
    else:
        img1 = crop_img[0:818, 167:288]


img1 = cv.GaussianBlur(img1,(5,5),0)

img1 = cv.Canny(img1,100,200)

img1 = cv.adaptiveThreshold(img1,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,11,2)
img1 = cv.adaptiveThreshold(img1,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,11,2)
img1 = cv.adaptiveThreshold(img1,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,11,2)
img1 = cv.adaptiveThreshold(img1,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,11,2)
img1 = cv.adaptiveThreshold(img1,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,11,2)


img1 = cv.GaussianBlur(img1,(5,5),0)

img = img1
img = cv.equalizeHist(img)

cimg = cv.cvtColor(img,cv.COLOR_GRAY2BGR)
print(cimg)
img1 = cv.Canny(img1,100,200)
img1 = cv.Canny(img1,100,200)
img1 = cv.Canny(img1,0,255,cv.THRESH_BINARY_INV | cv.THRESH_OTSU)[1]
img1 = cv.GaussianBlur(img1,(5,5),1)
img1 = cv.GaussianBlur(img1,(5,5),1)

circles = cv.HoughCircles(img,cv.HOUGH_GRADIENT,1,10,param1=50,param2=50,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
k=0
for i in circles[0,:]:
    cv.circle(cimg,(i[0],i[1]),2,(0,255,0),3)
    k = k+1

    cv.waitKey(0)
    cv.destroyAllWindows()


   for i in range(k):
        answers.append(circles[0][i][0]+circles[0][i][1]+circles[0][i][2])


sheet = len(answers)

final_answers = []
for i in range(0,5):
    j = i
    ind = 0
    index = ind
    index = 0
    max = answers[j]
    for j in range(i+1):
        if max<=answers[j]:
            max = answers[j]
            ind = ind+1
            index = ind
    if index == 0:
        final_answers.append('A')
    if index == 1:
        final_answers.append('B')
    if index == 2:
        final_answers.append('C')
    if index == 3:
        final_answers.append('D')
    if index == 4:
        final_answers.append('E')


mark = 0
itrr = len(final_answers)
for i in range(itrr):
    if final_answers[i]==correct_answers[i]:
        mark = mark+1
print(final_answers)
print(mark)


font = cv.FONT_HERSHEY_SIMPLEX

cv.putText(image1,'Marks:2/5', (20,450), font, 2,(0,0,255),3,cv.LINE_AA)
cv.imshow('marks',image1)
cv.waitKey(0)
cv.destroyAllWindows()