рдкрд░рд┐рдЪрдп
OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ Qt рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рддрд░рд╣, рдореБрдЭреЗ Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрдм рдХреИрдорд░рд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереАред
рдиреЗрдЯ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рддреЛрдбрд╝реЛ, рджреЗрдЦрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЗрдЦ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рдФрд░ "рд╣рд╛рдЗрд▓рд╛рдЗрдЯ" рдвреВрдВрдврдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреВрдЯреА рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП рдУрдкрдирд╕реАрд╡реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рдордп рдФрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред рд╡рд┐рдВрдбреЛрдЬ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд░рд╛рдб рдбреЗрд▓реНрдлреА рдореЗрдВ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
рдЯрд┐рдкреНрдкрдгреА
- рдХреЙрдлрд╝реАрд╕реНрдореЛрдХ рдХреЗ рд▓реЗрдЦрдХ рд╕рд░рд▓ рд╕рддреНрдп, рддрд░реАрдХреЗ, рдФрд░ рд╕реВрдХреНрд╖реНрдорддрд╛ рдХреЛ "рдЪрдмрд╛" рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВ ред рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ 20 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред
- рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП Qt рдХреНрд░рд┐рдПрдЯрд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдкрдиреЗ рдУрдПрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ .pro рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП
- рд▓реЗрдЦрдХ "рдЕрдиреНрдпрдерд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛" рдЬреИрд╕реА рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
- рд▓реЗрдЦрдХ Qt рдХреНрд░рд┐рдПрдЯрд░ рдФрд░ / рдпрд╛ Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдЗрдВрдЬрди!
- рдЙрдкрд╡рд╛рд╕ рдХреЗрд╡рд▓ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рджрд┐рд╢рд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдХрд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдк рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди
рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдкрдирд╕реАрд╡реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдХреЛрдб рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рд╣реИред
рд╢рд╛рдпрдж рдЕрдм рдореИрдВ рдЬреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рд╡рд╣ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд╕рдорд╛рди рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ Qt Designera рдкреНрд▓рдЧ-рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ "рдЦреАрдВрдЪреЗрдВ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЬрд╛рд╣рд┐рд░ рд╣реИ, Qt Dessigner рдкреИрд▓реЗрдЯ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ "рдлрдВрд╕рд╛рдпрд╛" рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдПрдХ рд╕рд░рд▓
QLabel рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ
рдкрд┐рдХреНрд╕рдореИрдк рд╕рдВрдкрддреНрддрд┐
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫрд╡рд┐ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдирд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреА рдУрд░ рдореБрдбрд╝рдирд╛
рдФрд░
рдХреНрдпреВрдЯреА рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд╕рд╛рде рдХрд╕реНрдЯрдо рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдВрдХ
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╕рдмрд╕реЗ рд╕реНрд░реЛрдд
ред рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ! рдЕрдм рд╣рдо рдЧрдВрддрд╡реНрдп рдкрде рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ: $ $ qtdir / plugin / рдбрд┐рдЬрд╝рд╛рдЗрдирд░
рдЖрдЗрдП рдирдП рдШрдЯрдХ рдХреЗ рдЖрд╡рд░рдг рдХреЛ рдПрдХ рддрд░рдл рдЫреЛрдбрд╝ рджреЗрдВред рд╣рдо рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдШрдЯрдХ рд╕реЗ рд╕реАрдзреЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдирдП рд╡рд┐рдЬреЗрдЯ рдХреЗ
CQtOpenCVImage рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдПрдВред
рд╣реИрдбрд░ рдлрд╝рд╛рдЗрд▓
cqtopencvimage.h#ifndef QTOPENCVIMAGE_H #define QTOPENCVIMAGE_H
#include <QtDesigner / QDesignerExportWidget> #include <QWidget> #include <QUrl> #include <QLabel> #include "opencv2/opencv.hpp" #include <QScopedPointer> /*----------------------------------------------------------------------------*/
рд╡рд░реНрдЧ CQtOpenCVImagePStreet; class #if defined(QDESIGNER_EXPORT_WIDGETS) QDESIGNER_WIDGET_EXPORT #else Q_DECL_EXPORT #endif
CQtOpenCVImage : public QWidget { Q_OBJECT Q_PROPERTY(QUrl capture READ getCapture WRITE slot_setCapture) Q_PROPERTY(QString text READ getLabelText WRITE slot_setLabelText) Q_PROPERTY(QPixmap pixmap READ getPixmap WRITE slot_setPixmap) Q_PROPERTY(bool scaledContents READ hasScaledContents WRITE slot_setScaledContents) Q_PROPERTY(bool grayscale READ isGrayscale WRITE slot_setGrayscale) Q_PROPERTY(Qt::Alignment alignment READ getAlignment WRITE setAlignment) public: explicit CQtOpenCVImage(QWidget* parent = 0, Qt::WindowFlags f = 0); virtual ~CQtOpenCVImage(); QUrl& getCapture (); QString getLabelText () const; const QPixmap* getPixmap () const; const QImage* getImage () const; Qt::Alignment getAlignment() const; void setAlignment(Qt::Alignment); const QLabel* getQLabel () const; bool hasScaledContents() const; bool isGrayscale() const; public Q_SLOTS: void slot_setCapture ( const QUrl& ); void slot_setLabelText ( const QString& ); void slot_setPixmap ( const QPixmap& ); void slot_setImage ( const QImage& ); void slot_setQLabel ( const QLabel& ); void slot_setGrayscale(bool); void slot_setScaledContents(bool); Q_SIGNALS: void signal_Grayscale(bool); void signal_ImageChanged(); void signal_CaptureChanged(); void signal_PixmapChanged(); void signal_LabelChanged(); void signal_AlignmentChanged(); private: Q_DISABLE_COPY(CQtOpenCVImage) Q_DECLARE_PRIVATE(CQtOpenCVImage)
QScopedPointer d_ptr;
}; #endif
рдПрдХ
рд╡рд┐рд╢реЗрд╖ рдлрд╝реЙрдиреНрдЯ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
редрд╣рдорд╛рд░реА
CQtOpenCVImage рдХреНрд▓рд╛рд╕ рджреГрд╢реНрдп рдЫрд╡рд┐ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдЧреБрдг (Q_PROPERTY) рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рд╕рдВрдкрддреНрддрд┐ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ
рд╢реВрдиреНрдп рд╕реНрд▓реЙрдЯ _ **** (***) рд╕реНрд▓реЙрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рджреГрд╢реНрдп рдбрд┐рдЬрд╛рдЗрди рдХреЗ рджреМрд░рд╛рди QWidget рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡реЗрдм (IP) рдХреИрдорд░рд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рджреЗрддрд╛ рд╣реИ:
- рдХреИрдкреНрдЪрд░ - рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рд╡реЗрдмрдХреИрдо рдирдВрдмрд░ рдХрд╛ URL;
- рдкрд╛рда - рдкрд╛рда рд╢рд┐рд▓рд╛рд▓реЗрдЦред рдкрд╛рда рд╕рдВрдкрддреНрддрд┐ QLabel рдХрд╛ рдПрдирд╛рд▓реЙрдЧ;
- Pixmap - QPixmap рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ред Pixmap QLabel рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ;
- scaledContents - рдЫрд╡рд┐ рдорд╛рдкрдиреАрдпрддрд╛ред рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ рд╕реНрдХреЗрд▓рдбреЙрдиреНрдЯреНрд╕ QLabel;
- рдЧреНрд░реЗрд╕реНрдХреЗрд▓ - рдЫрд╡рд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░рдВрдЧ рдореЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдмреВрд▓рд┐рдпрди рд╕реНрд╡рд┐рдЪ, рдЬрд╣рд╛рдВ рд╕рдЪ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рд╣реИ (рдЖрд░рдЬреАрдмреА);
- рд╕рдВрд░реЗрдЦрдг - рдкрд╛рда рдФрд░ рдкрд┐рдХреНрд╕рдореИрдк рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╕рдВрд░реЗрдЦрдгред рд╕рдВрд░реЗрдЦрдг рд╕рдВрдкрддреНрддрд┐ QLabel рдХрд╛ рдПрдирд╛рд▓реЙрдЧ;
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ: рдирд╛рдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИред
рдЪрд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб (рдлрд╝рд╛рдЗрд▓ cqtopencvimage.cpp
) рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ
ред
рдЫрд┐рдкреЗ рд╣реБрдП рд╡рд░реНрдЧ
CQtOpenCVImagePrivate , рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
class CQtOpenCVImagePrivate { Q_DECLARE_PUBLIC(CQtOpenCVImage) public: CQtOpenCVImagePrivate(CQtOpenCVImage* owner); virtual ~CQtOpenCVImagePrivate(); CQtOpenCVImage* q_ptr;
рдЪрд▓реЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
void CQtOpenCVImagePrivate::init () { Q_ASSERT(q_ptr); f_grid_layout = new QGridLayout(q_ptr); Q_ASSERT(f_grid_layout); f_label = new QLabel(q_ptr); Q_ASSERT(f_label); f_grid_layout->addWidget (f_label); p_qt_image = 0, p_capture = 0, p_opencv_frame = 0, f_grayscaled = 0; } inline void CQtOpenCVImagePrivate::close () { free_qt_image (); free_capture (); } CQtOpenCVImagePrivate::CQtOpenCVImagePrivate(CQtOpenCVImage* owner) : q_ptr(owner) { init (); } CQtOpenCVImagePrivate::~CQtOpenCVImagePrivate () { close (); if(!(f_label->parent ())) delete f_label; if(!(f_grid_layout->parent ())) delete f_grid_layout; } inline void CQtOpenCVImagePrivate::free_qt_image () { if(p_qt_image) { delete p_qt_image; p_qt_image = 0; } } inline void CQtOpenCVImagePrivate::free_capture () { if(p_capture) { cvReleaseCapture(&p_capture); p_capture = 0; } }
рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рдФрд░ рдкрдардиреАрдп рд╣реИред рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдЙрдардирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ CQtOpenCVImage * рд╕реНрд╡рд╛рдореА рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ CQtOpenCVImage рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЪрд░ CQtOpenCVImage рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд┐рдкреЗ рд╣реБрдП рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрддрд╛ рд╣реИ :: __ptrред
рдбреЙрдХреНрдЯрд░ рдХреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдлрд┐рд▓реНрдо "рдлреЙрд░реНрдореВрд▓рд╛ рдСрдл рд▓рд╡" рд╕реЗ рд▓рд┐рдпреЛрдирд┐рдж рдмреНрд░реЛрдирд╡реЙрдп рдХреЗ рдирд╛рдпрдХ, "рддреЛ, рдореИрдВ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ ..."ред
рдкрд░ рдХрдмреНрдЬрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
new_capture рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ
ред void CQtOpenCVImagePrivate::new_capture () { free_capture ();
OpenCV рдХреЗ рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рдЪрдп рдХреЗ рд▓рд┐рдП,
рд╕рд╛рдордЧреНрд░реА рддрд╛рд▓рд┐рдХрд╛ рдкрдврд╝реЗрдВ
рдкреНрд░рдХрд╛рд░ рдХреА рдЗрдореЗрдЬрд┐рдВрдЧ QImage:
void CQtOpenCVImagePrivate::new_qt_image () { if(!p_capture) return; free_qt_image ();
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрд╕рдмрд░реНрдЧ рдХреЗ рдкрд╛рдиреА рдХреЗ рдиреАрдЪреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ
рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рднреА рд╕рд░рд▓ рд╣реИред рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рднреА рдЖрд▓рд╕реАред рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:
CQtOpenCVImage::CQtOpenCVImage(QWidget* parent, Qt::WindowFlags f) : QWidget(parent, f), d_ptr(new CQtOpenCVImagePrivate(this)) { } CQtOpenCVImage::~CQtOpenCVImage() { } QUrl& CQtOpenCVImage::getCapture () { return (d_func ()->f_capture_path); } QString CQtOpenCVImage::getLabelText () const { return (d_func ()->f_label->text ()); } bool CQtOpenCVImage::hasScaledContents() const { return d_func ()->f_label->hasScaledContents (); } void CQtOpenCVImage::slot_setScaledContents(bool Value ) { d_func ()->f_label->setScaledContents (Value); } bool CQtOpenCVImage::isGrayscale() const { return d_func ()->f_grayscaled; } void CQtOpenCVImage::slot_setGrayscale( bool Value ) { if(d_func ()->f_grayscaled != Value) { d_func ()->f_grayscaled = Value; if(!(d_func ()->p_capture)) d_func ()->new_capture (); else d_func ()->new_qt_image (); emit signal_Grayscale (d_func ()->f_grayscaled); } } void CQtOpenCVImage::slot_setLabelText ( const QString& Value ) { d_func ()->f_label->setText (Value); } void CQtOpenCVImage::slot_setCapture ( const QUrl& Value ) {
рд╣рдо рдПрдХ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ images.pro рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
TARGET = QtOpenCVImages TARGET = $$qtLibraryTarget($$TARGET) TEMPLATE = lib CONFIG += debug_and_release
рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛:
DEFINES += QDESIGNER_EXPORT_WIDGETS
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
unix:!symbian { target.path = $$PWD/../../../../lib DESTDIR = $$PWD/../../../../lib INSTALLS += target }
рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ:
SOURCES += \ cqtopencvimage.cpp HEADERS += \ cqtopencvimage.h
OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╣реЗрдбрд░ рдХреЗ рдкрде рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
INCLUDEPATH += /usr/include/opencv2 DEPENDPATH += /usr/include/opencv2
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдХреЛрд░ рдФрд░ рд╣рд╛рдИрдЧреБрдИ) рдЬреЛрдбрд╝реЗрдВ:
#win32:CONFIG(release): LIBS += -L/usr/lib/ -lopencv_core #else:win32:CONFIG(debug, debug|release): LIBS += -L/usr/lib/ -lopencv_cored #else: unix: LIBS += -L/usr/lib/ -lopencv_core #win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../../usr/lib/release/ -lopencv_highgui #else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../../usr/lib/debug/ -lopencv_highguid #win32:CONFIG(release): LIBS += -L/usr/lib/release/ -lopencv_highgui #else:symbian: LIBS += -lopencv_highgui #else: unix: LIBS += -L/usr/lib/ -lopencv_highgui
рдкреНрд░рд┐рдп рд╡рд┐рдВрдбреЛрдЬ рдУрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕, рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реБрдИ рдХреЛ "рдмрдВрдж рдХрд░ рджрд┐рдпрд╛" рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрде рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЖрдк рдореВрд░реНрдЦ рд▓реЛрдЧ рдирд╣реАрдВ рд╣реИрдВ, рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред
* NIX oids, /usr/lib
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ln -s рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рд▓рд┐рдВрдХ рдмрдирд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓реЗрдЧрд╛!
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ OpenCV рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм рдХреИрдорд░рд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рдШрдЯрдХ рдХреА рдПрдХ рдЧрддрд┐рд╢реАрд▓ Qt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдИ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб:
рд╡реВ рдПрдХ рд▓рд╛ (рд╢рд╛рдмреНрджрд┐рдХ)рдбрд┐рдЬрд╝рд╛рдЗрди
рдпрд╣ рд╣рдорд╛рд░реЗ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд░реИрдкрд░ рдХреНрд▓рд╛рд╕ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдПрдХ рдкреНрд▓рдЧрдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдБ:
TARGET = QtOpenCVWidgets TARGET = $$qtLibraryTarget($$TARGET) TEMPLATE = lib CONFIG += designer plugin release DEFINES += QDESIGNER_EXPORT_WIDGETS SOURCES += \ qtopencvimageplugin.cpp \ ../qtopencvwidgets.cpp HEADERS +=\ qtopencvimageplugin.h \ ../qtopencvwidgets.h \ ../runtime/images/cqtopencvimage.h RESOURCES += \ qtopencvimages.qrc unix:!symbian { target.path = $$PWD/../../../lib DESTDIR = $$PWD/../../../lib INSTALLS += target } INCLUDEPATH += /usr/include/opencv2 DEPENDPATH += /usr/include/opencv2 #win32:CONFIG(release, debug|release): LIBS += -L/usr/lib/ -lQtOpenCVImages #else:win32:CONFIG(debug, debug|release): LIBS += -L/usr/lib -lQtOpenCVImages #else:symbian: LIBS += -lQtOpenCVImages #else: unix: LIBS += -L/usr/lib -lQtOpenCVImages INCLUDEPATH += $$PWD/../runtime/images DEPENDPATH += $$PWD/../runtime/images
рдПрдХ рд░рдирдЯрд╛рдЗрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЖрдЗрдП рдХреБрдЫ рдЕрдВрддрд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд╛рдо рдмрджрд▓ рдЧрдпрд╛ рд╣реИ: TARGET = QtOpenCVWidgets ;
- CONFIG + = рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдкреНрд▓рдЧрдЗрди рд░рд┐рд▓реАрдЬрд╝ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдЯреИрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
- рдкреНрд▓рдЧрдЗрди рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдбрд░ рдХреЗ рдкреНрд░рддрд┐ рдФрд░ рдХреНрд╡реЛрдЯреЛрдХреЗрдирд╡рд┐рдореЗрдЬрдкреНрд▓рдЧрд┐рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред * Qtopencvwidgetsред * <ред I>;
рдЕрднреА рднреА OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реЗрдбрд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рд╣рдорд╛рд░реЗ QtOpenCVImages рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╢рд╛рдорд┐рд▓ cqtopencvimage.h рд╣реЗрдбрд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛;
рдбрд╛рдпрдиреЗрдорд┐рдХ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА libQtOpenCVImages рдХреЛ /usr/lib/libQtOpenCVImages.so
рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ /usr/lib/libQtOpenCVImages.so
, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рд╣рдо Qt рдХреЗ рд╕рднреА рдХреИрдирди рдХреЗ рдЕрдиреБрд╕рд╛рд░ Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ:
Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдирд╛ (
coffeesmoke , рдЬреИрд╕рд╛ рдХрд┐ рдЬрд╝реЛрд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ!)ред
qtopencvimageplugin.h #ifndef QTOPENCVIMAGEPLUGIN_H #define QTOPENCVIMAGEPLUGIN_H #include <QObject> #include <QDesignerCustomWidgetInterface> class QtOpenCVImagePlugin : public QObject, public QDesignerCustomWidgetInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetInterface) public: explicit QtOpenCVImagePlugin(QObject *parent = 0); QString name() const; QString includeFile() const; QString group() const; QIcon icon() const; QString toolTip() const; QString whatsThis() const; bool isContainer() const; QWidget* createWidget(QWidget *parent); void initialize(QDesignerFormEditorInterface *core); bool isInitialized() const; QString domXml() const; signals: public slots: private: bool f_init; }; #endif // QTOPENCVIMAGEPLUGIN_H
рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░: Q_INTERFACE рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, QDesignerCustomWidgetInterface рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
рдорд┐рд▓рд╛ рдФрд░ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред
qtopencvimageplugin.cpp #include "qtopencvimageplugin.h" #include "cqtopencvimage.h" QtOpenCVImagePlugin::QtOpenCVImagePlugin(QObject *parent) : QObject(parent), f_init(false) { } QString QtOpenCVImagePlugin::name() const { return "CQtOpenCVImage";
рдмрд╣реБрдд рдХрдо рдмрдЪрд╛ рд╣реИ:
Qt <-> OpenCV
рд╕рдореВрд╣ рдХреЗ рд╣рдорд╛рд░реЗ рд╕рднреА рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╡рд░рдг-рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВ
qtopencvwidgets.h #ifndef QTOPENCVWIDGETS_H #define QTOPENCVWIDGETS_H #include <QObject> #include <QtPlugin> #include <QDesignerCustomWidgetCollectionInterface> class QtOpenCVWidgets : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: explicit QtOpenCVWidgets(QObject *parent = 0); QList<QDesignerCustomWidgetInterface*> customWidgets() const { return f_plugins; } private: QList<QDesignerCustomWidgetInterface *> f_plugins; }; #endif // QTOPENCVWIDGETS_H
qtopencvwidgets.cpp #include "qtopencvwidgets.h" #include "images/qtopencvimageplugin.h" QtOpenCVWidgets::QtOpenCVWidgets(QObject *parent) : QObject(parent) { f_plugins << new QtOpenCVImagePlugin(this); }
рдмреНрдпрд╛рдЬ рдХреА рд░рдЪрдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
f_plugins << new QtOpenCVImagePlugin(this);
ред рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдирдП рдШрдЯрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдФрд░ f_plugins рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрд╝рдХрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ << рдирдпрд╛ <рдЕрдЧрд▓рд╛> рдкреНрд▓рдЧрдЗрди (рдпрд╣);
рдЖрд╡реЗрджрди
Qt рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдЦреЛрд▓реЗрдВ рдФрд░ рдШрдЯрдХ рдкреИрд▓реЗрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ QtOpenCVImage рдХреЛ рджреЗрдЦреЗрдВред рд╣рдо рдЗрд╕реЗ рдПрдХ рдирдП рд░реВрдк рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред рдХреИрдкреНрдЪрд░ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд URL рдореЗрдВ рдмрджрд▓реЗрдВ
192.168.0.20:8080/image.jpg
192.168.0.20:8080/image.jpg
ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреИрдорд░рд╛ рд╕рд░реНрд╡рд░ рдХрд╛ рдЬрд╛рд╡рд╛ рдПрдкрд▓реЗрдЯ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдлреНрд░реЗрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
grayscale
рд╕рдВрдкрддреНрддрд┐ рдХреА
grayscale
рд╕реНрд░реЛрдд рдХреЛрдб:
рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рди рдХрд░реЗрдВ ред
рдирд┐рд╖реНрдХрд░реНрд╖
- рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреНрдпреВрдЯреА рдХреЗ рджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдП;
- рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреНрдпреВрдЯреА рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдХреИрд╕реЗ рдлреНрд░реЗрдо рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдкреНрд▓рдЧрдЗрди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ;
рдХреНрд╖реБрдзрд╛
рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рдорд▓рд╛
рдЖрдЗрдП рдПрдХ рдорд╛рдирдХ рдХреНрдпреВрдЯреА рдЬреАрдпреВрдЖрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ, рд╡рд┐рдВрдбреЛ рдХрд╛ рдореБрдЦреНрдп рд░реВрдк рдЦреЛрд▓реЗрдВ, рдЗрд╕рдореЗрдВ рд╕реЗ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЛ рд░рдЦреЗрдВ, рдХреБрдЫ рд╕реЗрд╡рд╛ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВред
рдорд╛рди 0 (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реАрдбрд┐рдпреЛ рдХреИрдорд░рд╛) рдореЗрдВ "рдкрддрд╛ ..." рдмрджрд▓реЗрдВ рдФрд░ рдЫрд╡рд┐ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦреЗрдВред
рд╕реНрд░реЛрдд рдХреЛрдб:
рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рди рдХрд░реЗрдВ ред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
- рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди;
- рдХреИрдиреА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рджреНрдз рджреГрд╢реНрдп рдШрдЯрдХ рдХрд╛ рд╡рд┐рд╡рд░рдг: CQtOpenCVCanny рд╡рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ CQtOpenCVCannyWidget;
- QtOpenCVImage рдФрд░ QtOpenCVCanny рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз
рдСрд▓ рдж рдмреЗрд╕реНрдЯред