Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кубасов С.Е. Разработка ПО распознавания штрихк...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.17 Mб
Скачать

Приложение Исходный код пс

RecognForm.cs

namespace Raspoz2

{

public partial class RecognForm : Form

{

private static Capture _cameraCapture; //Камера

public RecognForm()

{

InitializeComponent();

Run(); //Запускаем камеру

}

private void Form1_Load(object sender, EventArgs e)

{

}

void Run()

{

try

{

_cameraCapture = new Capture();

}

catch (Exception e)

{

MessageBox.Show(e.Message);

return;

}

Application.Idle += ProcessFrame;

}

void ProcessFrame(object sender, EventArgs e)

{

Image<Bgr, Byte> frame = _cameraCapture.QueryFrame(); //Полученный кадр

using (CascadeClassifier face = new CascadeClassifier("cascade.xml")) //Загрузка каскада

using (Image<Gray, Byte> gray = frame.Convert<Gray, Byte>()) //подготовка изображения

{

//Детектирование

Rectangle[] BarcodesDetected2 = face.DetectMultiScale(

gray, //Исходное изображение

1.1, //Коэффициент увеличения изображения

6, //Группировка предварительно обнаруженных событий. Чем их меньше, тем больше ложных тревог

new Size(5, 5), //Минимальный размер

Size.Empty); //Максимальный размер

//Вывод найденного

foreach (Rectangle f in BarcodesDetected2)

{

frame.Draw(f, new Bgr(Color.Blue), 2);

}

// create a barcode reader instance

IBarcodeReader reader = new BarcodeReader();

// Преобразование кадра к типу Bitmap

System.Drawing.Image frame_sys = frame.ToBitmap();

var barcodeBitmap = new Bitmap(frame_sys);

// Расшифровка штрихкода

var result = reader.Decode(barcodeBitmap);

// Вывод результата

Cascade.xml (до пятнадцатой стадии)

<?xml version="1.0"?>

<opencv_storage>

<cascade>

<stageType>BOOST</stageType>

<featureType>HAAR</featureType>

<height>25</height>

<width>25</width>

<stageParams>

<boostType>GAB</boostType>

<minHitRate>9.9500000476837158e-001</minHitRate>

<maxFalseAlarm>5.0000000000000000e-001</maxFalseAlarm>

<weightTrimRate>9.4999999999999996e-001</weightTrimRate>

<maxDepth>1</maxDepth>

<maxWeakCount>100</maxWeakCount></stageParams>

<featureParams>

<maxCatCount>0</maxCatCount>

<featSize>1</featSize>

<mode>ALL</mode></featureParams>

<stageNum>16</stageNum>

<stages>

<!-- stage 0 -->

<_>

<maxWeakCount>7</maxWeakCount>

<stageThreshold>-9.6873414516448975e-001</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 1 -2.4650871753692627e-002</internalNodes>

<leafValues>

9.7167140245437622e-001 -2.7506014704704285e-001</leafValues></_>

<_>

<internalNodes>

0 -1 31 -4.5817214413546026e-005</internalNodes>

<leafValues>

-7.7021634578704834e-001 3.6752030253410339e-001</leafValues></_>

<_>

<internalNodes>

0 -1 21 -6.0476006183307618e-005</internalNodes>

<leafValues>

-8.1241178512573242e-001 2.5379285216331482e-001</leafValues></_>

<_>

<internalNodes>

0 -1 129 3.2953108893707395e-004</internalNodes>

<leafValues>

2.3736147582530975e-001 -8.5157221555709839e-001</leafValues></_>

<_>

<internalNodes>

0 -1 71 -3.1409598886966705e-002</internalNodes>

<leafValues>

-7.8827428817749023e-001 2.6259097456932068e-001</leafValues></_>

<_>

<internalNodes>

0 -1 49 4.2782999575138092e-002</internalNodes>

<leafValues>

2.1045069396495819e-001 -8.2628446817398071e-001</leafValues></_>

<_>

<internalNodes>

0 -1 123 -7.2767172241583467e-005</internalNodes>

<leafValues>

-7.8245300054550171e-001 1.7855100333690643e-001</leafValues></_></weakClassifiers></_>

<!-- stage 1 -->

<_>

<maxWeakCount>6</maxWeakCount>

<stageThreshold>-7.3041534423828125e-001</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 22 -2.2984955459833145e-002</internalNodes>

<leafValues>

9.6685081720352173e-001 -2.8271406888961792e-001</leafValues></_>

<_>

<internalNodes>

0 -1 131 9.2621368821710348e-005</internalNodes>

<leafValues>

3.3765491843223572e-001 -7.9393005371093750e-001</leafValues></_>

<_>

<internalNodes>

0 -1 101 3.9641359762754291e-005</internalNodes>

<leafValues>

2.2931124269962311e-001 -7.9638719558715820e-001</leafValues></_>

<_>

<internalNodes>

0 -1 11 2.9998266836628318e-004</internalNodes>

<leafValues>

2.3338884115219116e-001 -7.7504962682723999e-001</leafValues></_>

<_>

<internalNodes>

0 -1 25 -2.7225703001022339e-001</internalNodes>

<leafValues>

-8.9511430263519287e-001 1.9871975481510162e-001</leafValues></_>

<_>

<internalNodes>

0 -1 82 -6.1522528994828463e-004</internalNodes>

<leafValues>

7.7864295244216919e-001 -2.8907522559165955e-001</leafValues></_></weakClassifiers></_>

<!-- stage 2 -->

<_>

<maxWeakCount>8</maxWeakCount>

<stageThreshold>-7.6124441623687744e-001</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 98 2.6642694137990475e-003</internalNodes>

<leafValues>

-2.9801324009895325e-001 9.1836732625961304e-001</leafValues></_>

<_>

<internalNodes>

0 -1 94 9.8451739177107811e-004</internalNodes>

<leafValues>

-1.9396866858005524e-001 8.8032341003417969e-001</leafValues></_>

<_>

<internalNodes>

0 -1 87 2.2182296961545944e-003</internalNodes>

<leafValues>

-2.3337045311927795e-001 8.0210471153259277e-001</leafValues></_>

<_>

<internalNodes>

0 -1 70 2.9143627732992172e-002</internalNodes>

<leafValues>

2.8257790207862854e-001 -8.1678903102874756e-001</leafValues></_>

<_>

<internalNodes>

0 -1 3 -1.4558699331246316e-004</internalNodes>

<leafValues>

-7.9803514480590820e-001 2.2243097424507141e-001</leafValues></_>

<_>

<internalNodes>

0 -1 84 5.6398875312879682e-004</internalNodes>

<leafValues>

-3.1254756450653076e-001 6.5493190288543701e-001</leafValues></_>

<_>

<internalNodes>

0 -1 116 -1.0646571899997070e-004</internalNodes>

<leafValues>

3.8564914464950562e-001 -5.4531794786453247e-001</leafValues></_>

<_>

<internalNodes>

0 -1 55 4.4087086280342191e-005</internalNodes>

<leafValues>

-5.3711688518524170e-001 4.0646362304687500e-001</leafValues></_></weakClassifiers></_>

<!-- stage 3 -->

<_>

<maxWeakCount>7</maxWeakCount>

<stageThreshold>-1.1723710298538208e+000</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 53 -1.1368032544851303e-002</internalNodes>

<leafValues>

8.6597937345504761e-001 -2.7722772955894470e-001</leafValues></_>

<_>

<internalNodes>

0 -1 124 -4.1804090142250061e-004</internalNodes>

<leafValues>

-7.0867651700973511e-001 3.6147430539131165e-001</leafValues></_>

<_>

<internalNodes>

0 -1 13 6.2293605878949165e-005</internalNodes>

<leafValues>

2.3243567347526550e-001 -7.5742620229721069e-001</leafValues></_>

<_>

<internalNodes>

0 -1 18 -2.6580391568131745e-004</internalNodes>

<leafValues>

-7.0679146051406860e-001 2.9063123464584351e-001</leafValues></_>

<_>

<internalNodes>

0 -1 27 2.4352136999368668e-002</internalNodes>

<leafValues>

-3.4689226746559143e-001 6.7778885364532471e-001</leafValues></_>

<_>

<internalNodes>

0 -1 128 -1.6083351511042565e-004</internalNodes>

<leafValues>

-6.2784981727600098e-001 3.1239959597587585e-001</leafValues></_>

<_>

<internalNodes>

0 -1 119 -6.5745938627514988e-005</internalNodes>

<leafValues>

-7.0467710494995117e-001 1.9248020648956299e-001</leafValues></_></weakClassifiers></_>

<!-- stage 4 -->

<_>

<maxWeakCount>8</maxWeakCount>

<stageThreshold>-8.2804256677627563e-001</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 69 -1.5331812202930450e-002</internalNodes>

<leafValues>

8.6632388830184937e-001 -2.7828240394592285e-001</leafValues></_>

<_>

<internalNodes>

0 -1 4 2.2877776063978672e-004</internalNodes>

<leafValues>

3.0375176668167114e-001 -7.2120666503906250e-001</leafValues></_>

<_>

<internalNodes>

0 -1 4 -8.7837499449960887e-005</internalNodes>

<leafValues>

-7.4494946002960205e-001 2.6555183529853821e-001</leafValues></_>

<_>

<internalNodes>

0 -1 5 -1.3154254702385515e-004</internalNodes>

<leafValues>

-6.4511001110076904e-001 2.3149906098842621e-001</leafValues></_>

<_>

<internalNodes>

0 -1 41 2.9841929062968120e-005</internalNodes>

<leafValues>

-5.2249288558959961e-001 2.8285980224609375e-001</leafValues></_>

<_>

<internalNodes>

0 -1 61 -1.1242910113651305e-004</internalNodes>

<leafValues>

-6.6514241695404053e-001 2.2884616255760193e-001</leafValues></_>

<_>

<internalNodes>

0 -1 77 9.8163448274135590e-004</internalNodes>

<leafValues>

-1.8956978619098663e-001 8.1250369548797607e-001</leafValues></_>

<_>

<internalNodes>

0 -1 14 -2.7865386800840497e-004</internalNodes>

<leafValues>

-7.6131129264831543e-001 2.4624796211719513e-001</leafValues></_></weakClassifiers></_>

<!-- stage 5 -->

<_>

<maxWeakCount>7</maxWeakCount>

<stageThreshold>-1.0307321548461914e+000</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 23 -3.2398186624050140e-002</internalNodes>

<leafValues>

5.8371043205261230e-001 -4.1302028298377991e-001</leafValues></_>

<_>

<internalNodes>

0 -1 51 1.6625803255010396e-005</internalNodes>

<leafValues>

-5.4822552204132080e-001 3.9287295937538147e-001</leafValues></_>

<_>

<internalNodes>

0 -1 90 2.3175929673016071e-003</internalNodes>

<leafValues>

-2.3395423591136932e-001 7.7779978513717651e-001</leafValues></_>

<_>

<internalNodes>

0 -1 126 1.1726377997547388e-003</internalNodes>

<leafValues>

2.4579028785228729e-001 -7.5748258829116821e-001</leafValues></_>

<_>

<internalNodes>

0 -1 114 4.3141844798810780e-005</internalNodes>

<leafValues>

2.1666172146797180e-001 -8.1352019309997559e-001</leafValues></_>

<_>

<internalNodes>

0 -1 113 -1.3542758097173646e-005</internalNodes>

<leafValues>

3.2708042860031128e-001 -4.7948190569877625e-001</leafValues></_>

<_>

<internalNodes>

0 -1 125 -1.5737346257083118e-004</internalNodes>

<leafValues>

-7.1197426319122314e-001 2.4367219209671021e-001</leafValues></_></weakClassifiers></_>

<!-- stage 6 -->

<_>

<maxWeakCount>10</maxWeakCount>

<stageThreshold>-1.1102532148361206e+000</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 103 1.5819584950804710e-002</internalNodes>

<leafValues>

-4.1383096575737000e-001 5.4716980457305908e-001</leafValues></_>

<_>

<internalNodes>

0 -1 80 -2.7801905525848269e-004</internalNodes>

<leafValues>

-6.5362668037414551e-001 2.8362187743186951e-001</leafValues></_>

<_>

<internalNodes>

0 -1 54 -1.3542758097173646e-005</internalNodes>

<leafValues>

3.4536886215209961e-001 -4.9160996079444885e-001</leafValues></_>

<_>

<internalNodes>

0 -1 52 -3.6751693114638329e-003</internalNodes>

<leafValues>

-7.7156746387481689e-001 2.4632607400417328e-001</leafValues></_>

<_>

<internalNodes>

0 -1 78 1.7518883105367422e-003</internalNodes>

<leafValues>

-2.5899779796600342e-001 8.4888494014739990e-001</leafValues></_>

<_>

<internalNodes>

0 -1 107 -4.8629899538354948e-005</internalNodes>

<leafValues>

3.8012766838073730e-001 -4.5802769064903259e-001</leafValues></_>

<_>

<internalNodes>

0 -1 88 1.2616477906703949e-003</internalNodes>

<leafValues>

-2.5994312763214111e-001 7.5926667451858521e-001</leafValues></_>

<_>

<internalNodes>

0 -1 30 -5.8852325309999287e-005</internalNodes>

<leafValues>

-5.8757412433624268e-001 3.3007568120956421e-001</leafValues></_>

<_>

<internalNodes>

0 -1 85 -7.9056184040382504e-004</internalNodes>

<leafValues>

8.2950729131698608e-001 -2.0915500819683075e-001</leafValues></_>

<_>

<internalNodes>

0 -1 91 -7.3138202424161136e-005</internalNodes>

<leafValues>

-6.3619673252105713e-001 3.0298924446105957e-001</leafValues></_></weakClassifiers></_>

<!-- stage 7 -->

<_>

<maxWeakCount>9</maxWeakCount>

<stageThreshold>-1.1976939439773560e+000</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 45 -2.3124735802412033e-002</internalNodes>

<leafValues>

8.8328909873962402e-001 -2.7228128910064697e-001</leafValues></_>

<_>

<internalNodes>

0 -1 46 2.9466820706147701e-005</internalNodes>

<leafValues>

-5.4980814456939697e-001 4.1867563128471375e-001</leafValues></_>

<_>

<internalNodes>

0 -1 72 1.0501373559236526e-002</internalNodes>

<leafValues>

-4.8026835918426514e-001 3.9370366930961609e-001</leafValues></_>

<_>

<internalNodes>

0 -1 121 2.3898979998193681e-004</internalNodes>

<leafValues>

-5.0796025991439819e-001 3.5177624225616455e-001</leafValues></_>

<_>

<internalNodes>

0 -1 75 -8.7588158203288913e-004</internalNodes>

<leafValues>

6.7114096879959106e-001 -2.4088495969772339e-001</leafValues></_>

<_>

<internalNodes>

0 -1 34 -6.3769432017579675e-005</internalNodes>

<leafValues>

4.0482512116432190e-001 -4.2510727047920227e-001</leafValues></_>

<_>

<internalNodes>

0 -1 12 2.6267470093443990e-004</internalNodes>

<leafValues>

1.5169836580753326e-001 -8.4886437654495239e-001</leafValues></_>

<_>

<internalNodes>

0 -1 122 -3.1930156052112579e-002</internalNodes>

<leafValues>

-9.1139626502990723e-001 1.4687350392341614e-001</leafValues></_>

<_>

<internalNodes>

0 -1 63 8.1062234938144684e-002</internalNodes>

<leafValues>

1.5011204779148102e-001 -7.8267234563827515e-001</leafValues></_></weakClassifiers></_>

<!-- stage 8 -->

<_>

<maxWeakCount>9</maxWeakCount>

<stageThreshold>-1.2852327823638916e+000</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 15 3.8249801844358444e-002</internalNodes>

<leafValues>

-3.1792977452278137e-001 6.6409265995025635e-001</leafValues></_>

<_>

<internalNodes>

0 -1 36 -7.2860326326917857e-005</internalNodes>

<leafValues>

-7.6734501123428345e-001 2.6591709256172180e-001</leafValues></_>

<_>

<internalNodes>

0 -1 33 -1.6327975317835808e-003</internalNodes>

<leafValues>

3.3875334262847900e-001 -4.9987167119979858e-001</leafValues></_>

<_>

<internalNodes>

0 -1 37 2.1789318998344243e-004</internalNodes>

<leafValues>

3.0603858828544617e-001 -5.6173115968704224e-001</leafValues></_>

<_>

<internalNodes>

0 -1 105 -2.1359072707127780e-004</internalNodes>

<leafValues>

-8.0614095926284790e-001 1.6788418591022491e-001</leafValues></_>

<_>

<internalNodes>

0 -1 105 1.9808551587630063e-004</internalNodes>

<leafValues>

2.5436797738075256e-001 -6.3247036933898926e-001</leafValues></_>

<_>

<internalNodes>

0 -1 67 -2.1623399108648300e-002</internalNodes>

<leafValues>

5.5358868837356567e-001 -3.7801659107208252e-001</leafValues></_>

<_>

<internalNodes>

0 -1 99 -4.1011175198946148e-005</internalNodes>

<leafValues>

4.6962505578994751e-001 -4.0010082721710205e-001</leafValues></_>

<_>

<internalNodes>

0 -1 44 -8.9231201855000108e-005</internalNodes>

<leafValues>

-7.8473299741744995e-001 2.0136044919490814e-001</leafValues></_></weakClassifiers></_>

<!-- stage 9 -->

<_>

<maxWeakCount>6</maxWeakCount>

<stageThreshold>-1.3421059846878052e+000</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

0 -1 6 -2.1999178454279900e-002</internalNodes>

<leafValues>

9.4134896993637085e-001 -2.5496426224708557e-

-4.3406841158866882e-001 5.2149122953414917e-001</leafValues></_>

<_>

<internalNodes>

0 -1 8 -4.7050632536411285e-002</internalNodes>

<leafValues>

7.5384473800659180e-001 -2.9723891615867615e-001</leafValues></_>

<_>

<internalNodes>

0 -1 106 -4.0187966078519821e-005</internalNodes>

<leafValues>

4.9126160144805908e-001 -4.8887139558792114e-001</leafValues></_>

<_>

<internalNodes>

0 -1 65 -4.7354843467473984e-002</internalNodes>

<leafValues>

5.1604723930358887e-001 -3.6243334412574768e-001</leafValues></_>

<_>

<internalNodes>

0 -1 47 -1.0171736357733607e-004</internalNodes>

<leafValues>

3.5303121805191040e-001 -4.8466274142265320e-001</leafValues></_></weakClassifiers></_>

<!-- stage 10 -->