๐2์ 4์ฃผ์ฐจ ํ๋ก์ ํธ ์งํ์ํฉ - minho0315/OpenCV GitHub Wiki
์ด๋์ด ์ฌ์ง
์์๋ ๋ฐ๊ธฐ๊ฐ ๋ค๋ฅธ ์ฌ์ง
๋น์ค๋ฌํ ์ฐ์ ์ฌ์ง
omr ์ฒดํฌ๋ฅผ ๋์ถฉ ํ ์ด๋ฏธ์ง
omr ์ฒดํฌ๊ฐ ์ธ์๋์ง ์์
for (int i = 0; i < questionCnts.size();)
{
int answerKey = 0;
for (int j = 0; j < StudentNumber; ++i, ++j) // ์ด๋ฏธ์ง์์ ํฐ ํฝ์
์๊ฐ ๋ง์ ๊ฐ์ ์ ํํ๋ค.
{
Mat mask = Mat::zeros(threshs.size(), CV_8U);
drawContours(mask, questionCnts, i, 255, CV_FILLED, 8, hierarchys, 0, Point());
bitwise_and(mask, threshs, mask);
int a = countNonZero(mask);
if (countNonZero(mask) > 100) // ๋ฐฐ์ด ํ๋ ฌ ์์ 0(๊ฒ์์)์ด ์๋ ํฝ์
์ ์๋ฅผ ๋ฐํ. โ
OMR ์์น ์ด ๋์ถฉ ๋์ด์๋ค๋ฉด mask ๊ฐ ์ปค์ผํ๋ ์์น๋ฅผ ์์ ์๋ก ์ค์ ํ๋ฉด ๋จ!
{
answerKey += num * (int)pow(10, 8 - j);
drawContours(studentNumbers, questionCnts, i, Scalar(255, 0, 0), 2, 8, hierarchys, 0, Point()); // ์ธ์ํ ์ ํ๋์์ผ๋ก ํ์
}
}
id += answerKey;
num++;
}
ํ๋ฒ์ธ์ ์ฑ๊ณต
if๋ฌธ์ ์ซ์๋ฅผ ์ค์ด๋ฉด ์ธ์๋ฅ ์ ๋์์ง์ง๋ง ๊ทธ๋งํผ ์ ํ๋๋ ๋จ์ด์ง๊ฒ ๋จ!
์ธ์๋ฅ ๊ณ์ฐ์ ์ํด omr์นด๋๋ฅผ ๋ฌด์์๋ก ์ฒดํฌ 10์ฅ
์กฐ๊ฑด
์ธ์๋ฅ ์ ์๊ธฐ ์ํด ๋ฌธ์ ์ ๋ชจ๋ ๋ฒํธ ์ฒดํฌ
๋ฒํธ์ ์์ ๊ฝ ์ฑ์ฐ์ง ์๊ณ ์ฒดํฌ
recognitionValue ๊ฐ์ ๋ฐ๋ฅธ ์ธ์๋ฅ ์กฐ์
recognitionValue ๊ฐ์ด ๋ฎ์ ๋ -> ์ธ์๋ฅ ์ด ๋์
recognitionValue ๊ฐ์ด ๋์ ๋ -> ์ธ์๋ฅ ์ด ๋ฎ์
1๋ฒ~ 20๋ฒ ๊ฐ ๋ฌธ์ ๋ณ ์ ๋ต๋ฅ ์ ๊ณ์ฐ