commit
40c2e69663
6 changed files with 315 additions and 0 deletions
@ -0,0 +1,74 @@
@@ -0,0 +1,74 @@
|
||||
# This file is used to ignore files which are generated |
||||
# ---------------------------------------------------------------------------- |
||||
|
||||
*~ |
||||
*.autosave |
||||
*.a |
||||
*.core |
||||
*.moc |
||||
*.o |
||||
*.obj |
||||
*.orig |
||||
*.rej |
||||
*.so |
||||
*.so.* |
||||
*_pch.h.cpp |
||||
*_resource.rc |
||||
*.qm |
||||
.#* |
||||
*.*# |
||||
core |
||||
!core/ |
||||
tags |
||||
.DS_Store |
||||
.directory |
||||
*.debug |
||||
Makefile* |
||||
*.prl |
||||
*.app |
||||
moc_*.cpp |
||||
ui_*.h |
||||
qrc_*.cpp |
||||
Thumbs.db |
||||
*.res |
||||
*.rc |
||||
/.qmake.cache |
||||
/.qmake.stash |
||||
|
||||
# qtcreator generated files |
||||
*.pro.user* |
||||
|
||||
# xemacs temporary files |
||||
*.flc |
||||
|
||||
# Vim temporary files |
||||
.*.swp |
||||
|
||||
# Visual Studio generated files |
||||
*.ib_pdb_index |
||||
*.idb |
||||
*.ilk |
||||
*.pdb |
||||
*.sln |
||||
*.suo |
||||
*.vcproj |
||||
*vcproj.*.*.user |
||||
*.ncb |
||||
*.sdf |
||||
*.opensdf |
||||
*.vcxproj |
||||
*vcxproj.* |
||||
|
||||
# MinGW generated files |
||||
*.Debug |
||||
*.Release |
||||
|
||||
# Python byte code |
||||
*.pyc |
||||
|
||||
# Binaries |
||||
# -------- |
||||
*.dll |
||||
*.exe |
||||
|
||||
CMakeLists.txt.user |
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
cmake_minimum_required(VERSION 3.5) |
||||
|
||||
project(cap0 VERSION 0.1 LANGUAGES CXX) |
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON) |
||||
|
||||
set(CMAKE_AUTOUIC ON) |
||||
set(CMAKE_AUTOMOC ON) |
||||
set(CMAKE_AUTORCC ON) |
||||
|
||||
set(CMAKE_CXX_STANDARD 17) |
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON) |
||||
|
||||
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) |
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) |
||||
|
||||
|
||||
set(PROJECT_SOURCES |
||||
main.cpp |
||||
mainwindow.cpp |
||||
mainwindow.h |
||||
mainwindow.ui |
||||
) |
||||
|
||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) |
||||
qt_add_executable(cap0 |
||||
MANUAL_FINALIZATION |
||||
${PROJECT_SOURCES} |
||||
) |
||||
# Define target properties for Android with Qt 6 as: |
||||
# set_property(TARGET cap0 APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR |
||||
# ${CMAKE_CURRENT_SOURCE_DIR}/android) |
||||
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation |
||||
else() |
||||
if(ANDROID) |
||||
add_library(cap0 SHARED |
||||
${PROJECT_SOURCES} |
||||
) |
||||
# Define properties for Android with Qt 5 after find_package() calls as: |
||||
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") |
||||
else() |
||||
add_executable(cap0 |
||||
${PROJECT_SOURCES} |
||||
) |
||||
endif() |
||||
endif() |
||||
|
||||
target_link_libraries(cap0 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) |
||||
set_target_properties(cap0 PROPERTIES |
||||
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com |
||||
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} |
||||
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} |
||||
MACOSX_BUNDLE TRUE |
||||
WIN32_EXECUTABLE TRUE |
||||
) |
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6) |
||||
qt_finalize_executable(cap0) |
||||
endif() |
||||
|
||||
|
||||
include_directories("C:/msys64/mingw64/include/opencv4") |
||||
|
||||
file(GLOB CVLIBS "C:/msys64/mingw64/lib/libopencv*.a") |
||||
|
||||
target_link_libraries(cap0 PRIVATE ${CVLIBS}) |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
#include "mainwindow.h" |
||||
|
||||
#include <QApplication> |
||||
|
||||
int main(int argc, char *argv[]) |
||||
{ |
||||
QApplication a(argc, argv); |
||||
MainWindow w; |
||||
w.show(); |
||||
return a.exec(); |
||||
} |
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
#include "mainwindow.h" |
||||
#include "./ui_mainwindow.h" |
||||
|
||||
MainWindow::MainWindow(QWidget *parent) |
||||
: QMainWindow(parent) |
||||
, ui(new Ui::MainWindow) |
||||
{ |
||||
ui->setupUi(this); |
||||
cap = new VideoCapture(0); |
||||
onCap = false; |
||||
vt = new QTimer(this); |
||||
// vt->start(20);
|
||||
QObject::connect(vt,SIGNAL(timeout()),this,SLOT(showImage())); |
||||
} |
||||
|
||||
MainWindow::~MainWindow() |
||||
{ |
||||
delete ui; |
||||
} |
||||
|
||||
|
||||
void MainWindow::on_pushButton_clicked() |
||||
{ |
||||
if(onCap){ |
||||
vt->stop(); |
||||
onCap = false; |
||||
} |
||||
else{ |
||||
vt->start(20); |
||||
onCap = true; |
||||
} |
||||
} |
||||
|
||||
void MainWindow::showImage(){ |
||||
if(NULL!=cap){ |
||||
if(cap->read(image)){ |
||||
ui->label->setPixmap(QPixmap::fromImage(QImage(image.data,image.cols,image.rows,QImage::Format_RGB888))); |
||||
} |
||||
} |
||||
} |
||||
|
||||
void MainWindow::on_pushButton_2_clicked() |
||||
{ |
||||
QFile f("img.bin"); |
||||
f.open(QIODevice::ReadWrite); |
||||
QDataStream streamout(&f); |
||||
streamout.writeBytes((char*)image.data,image.rows*image.cols*3); |
||||
f.close(); |
||||
} |
||||
|
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
#ifndef MAINWINDOW_H |
||||
#define MAINWINDOW_H |
||||
|
||||
#include <QMainWindow> |
||||
#include <opencv2/opencv.hpp> |
||||
#include <boost/chrono/chrono.hpp> |
||||
#include <QPainter> |
||||
#include <QTimer> |
||||
#include <QObject> |
||||
#include <QImage> |
||||
#include <QPixmap> |
||||
#include <QFile> |
||||
#include <QDataStream> |
||||
using namespace cv; |
||||
|
||||
QT_BEGIN_NAMESPACE |
||||
namespace Ui { class MainWindow; } |
||||
QT_END_NAMESPACE |
||||
|
||||
class MainWindow : public QMainWindow |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
MainWindow(QWidget *parent = nullptr); |
||||
~MainWindow(); |
||||
|
||||
private slots: |
||||
void on_pushButton_clicked(); |
||||
void showImage(); |
||||
|
||||
void on_pushButton_2_clicked(); |
||||
|
||||
private: |
||||
Ui::MainWindow *ui; |
||||
VideoCapture* cap; |
||||
bool onCap; |
||||
QTimer* vt; |
||||
Mat image; |
||||
|
||||
|
||||
}; |
||||
#endif // MAINWINDOW_H
|
@ -0,0 +1,71 @@
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>MainWindow</class> |
||||
<widget class="QMainWindow" name="MainWindow"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>993</width> |
||||
<height>496</height> |
||||
</rect> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>MainWindow</string> |
||||
</property> |
||||
<widget class="QWidget" name="centralwidget"> |
||||
<widget class="QPushButton" name="pushButton"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>20</x> |
||||
<y>30</y> |
||||
<width>80</width> |
||||
<height>21</height> |
||||
</rect> |
||||
</property> |
||||
<property name="text"> |
||||
<string>open</string> |
||||
</property> |
||||
</widget> |
||||
<widget class="QLabel" name="label"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>140</x> |
||||
<y>30</y> |
||||
<width>571</width> |
||||
<height>401</height> |
||||
</rect> |
||||
</property> |
||||
<property name="text"> |
||||
<string/> |
||||
</property> |
||||
</widget> |
||||
<widget class="QPushButton" name="pushButton_2"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>20</x> |
||||
<y>70</y> |
||||
<width>80</width> |
||||
<height>21</height> |
||||
</rect> |
||||
</property> |
||||
<property name="text"> |
||||
<string>save</string> |
||||
</property> |
||||
</widget> |
||||
</widget> |
||||
<widget class="QMenuBar" name="menubar"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>993</width> |
||||
<height>19</height> |
||||
</rect> |
||||
</property> |
||||
</widget> |
||||
<widget class="QStatusBar" name="statusbar"/> |
||||
</widget> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |
Loading…
Reference in new issue