Browse Source

自动曝光, 自动盲元

master
zara 9 months ago
parent
commit
f89d926fca
  1. 5
      CMakeLists.txt
  2. 2
      CMakeLists.txt.user
  3. 59
      autoflash.cpp
  4. 34
      autoflash.h
  5. 49
      mainwindow.cpp
  6. 12
      mainwindow.h
  7. 178
      mainwindow.ui
  8. 20
      menu5.cpp
  9. 8
      menu5.h
  10. 63
      menu5.ui
  11. 81
      multipoint.cpp
  12. 8
      multipoint.h

5
CMakeLists.txt

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.5)
set(PROJECT_VERSION 1.4.2.14)
set(PROJECT_VERSION 1.4.2.17)
add_definitions(-DProjectVersion=\"${PROJECT_VERSION}\")
project(zxrcClient VERSION ${PROJECT_VERSION} LANGUAGES CXX)
@ -108,6 +108,9 @@ set(PROJECT_SOURCES @@ -108,6 +108,9 @@ set(PROJECT_SOURCES
menu6.cpp menu6.h menu6.ui
passwd.cpp passwd.h passwd.ui
devicelist.cpp devicelist.h devicelist.ui
autoflash.cpp
autoflash.h
)
###

2
CMakeLists.txt.user

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 11.0.1, 2024-09-20T18:01:09. -->
<!-- Written by QtCreator 11.0.1, 2024-10-09T18:05:41. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

59
autoflash.cpp

@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
#include "autoflash.h"
autoFlash::autoFlash(QObject *parent)
: QObject{parent}
{
thread = new QThread();
thread->start();
this->moveToThread(thread);
b_sv = false; //
// lastlight;
count = 0;
// double threshold;
threshold = 6000;
}
void autoFlash::slotprocimg(cv::Mat img)
{
if(count>0){
b_sv = false;
count -=1;
return;
}
double avg = 0;
for(int i = 0;i<img.rows;i+=10){
for(int j = 0;j<img.cols;j+=10){
avg += img.at<ushort>(i,j);
}
}
avg = avg/int(img.rows/10)/int(img.cols/10)/4;
if(b_sv){
lastlight = lastlight/20*19 +avg/20;
}
else{
lastlight = avg;
b_sv = true;
}
if(lastlight-threshold<-1000){
emit signalSetIT(-1);
count = 5;
}
if(lastlight-threshold>1000){
emit signalSetIT(1);
count = 5;
}
}
void autoFlash::slotsetshre(double thre)
{
this->threshold = thre;
}

34
autoflash.h

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
#ifndef AUTOFLASH_H
#define AUTOFLASH_H
#include <QObject>
#include <QThread>
#include <opencv2/opencv.hpp>
class autoFlash : public QObject
{
Q_OBJECT
public:
explicit autoFlash(QObject *parent = nullptr);
public slots:
void slotprocimg(cv::Mat);
void slotsetshre(double);
signals:
void signalSetIT(double);
private:
QThread* thread;
bool b_sv; //
double lastlight;
int count;
double threshold;
};
#endif // AUTOFLASH_H

49
mainwindow.cpp

@ -37,6 +37,7 @@ MainWindow::~MainWindow() @@ -37,6 +37,7 @@ MainWindow::~MainWindow()
void MainWindow::initUI()
{
b_af = false;
b_stat = true;
ui->pushButton_3->setChecked(true);
imageX = -10;
@ -212,7 +213,19 @@ void MainWindow::initConnect() @@ -212,7 +213,19 @@ void MainWindow::initConnect()
}
});
connect(usb,SIGNAL(signalGetImage(cv::Mat)),m_af,SLOT(slotprocimg(cv::Mat)));
connect(m_af,&autoFlash::signalSetIT,[=](double it){
if(b_af)
if(d_it -it >0 && d_it-it<=10){
ucontrol->setIT(d_it-it);
d_it -=it;
if(m_mp!=nullptr){
// ddd<<this->deviceid<<it;
// m_mp->loaddata(this->deviceid,it);
m_mp->setit(d_it);
}
}
});
#if CLIENT == 0 || CLIENT==1
connect(usb,SIGNAL(signalGetImage(cv::Mat)),this,SLOT(slotShowImage(cv::Mat)));
@ -315,13 +328,18 @@ void MainWindow::initConnect() @@ -315,13 +328,18 @@ void MainWindow::initConnect()
m_mp->savedata(path,d_it );
});
connect(m5,SIGNAL(signalrmbld(bool)),m_mp,SLOT(setrmblk(bool)));
connect(m5,SIGNAL(signalthre(double)),m_mp,SLOT(slotSetThre(double)));
connect(m_mp,SIGNAL(signalNewFrame(double)),m5,SLOT(slotRefresh(double)));
// connect(m5,SIGNAL(signalloaddata(QString)),m_mp,SLOT(loaddata(QString)));
connect(m5,&menu5::signalloaddata,[this](QString path){
// m_mp->loaddata(path,this->d_it);
this->deviceid = path;
m_mp->setdevice(path);
m_mp->enable = true;
m_mp->setdevice(path);
// m_mp->loaddata();
});
connect(m5,SIGNAL(signaloff()),m_mp,SLOT(off()));
@ -968,6 +986,7 @@ void MainWindow::initIns() @@ -968,6 +986,7 @@ void MainWindow::initIns()
usb = new usbthread();
ucontrol = new usbcontrol();
m_af = new autoFlash();
QTimer* t = new QTimer(this);
connect(t,&QTimer::timeout,[=](){
@ -1100,7 +1119,7 @@ void MainWindow::on_pushButton_9_clicked() @@ -1100,7 +1119,7 @@ void MainWindow::on_pushButton_9_clicked()
void MainWindow::on_pushButton_10_clicked()
{
QTimer *t = new QTimer();
t->start(200);
t->start(90);
connect(t,&QTimer::timeout,[=](){
double it = QRandomGenerator64::global()->generateDouble()*9+1;
ucontrol->setIT(it);
@ -1147,3 +1166,27 @@ void MainWindow::on_comboBox_currentIndexChanged(int index) @@ -1147,3 +1166,27 @@ void MainWindow::on_comboBox_currentIndexChanged(int index)
}
}
void MainWindow::on_spinBox_3_valueChanged(int arg1)
{
}
void MainWindow::on_pushButton_11_clicked()
{
m_af->slotsetshre(ui->spinBox_3->value());
}
void MainWindow::on_pushButton_12_clicked()
{
b_af =!b_af;
if(b_af){
slotlogtext(u8"开始自动曝光");
}
else{
slotlogtext(u8"关闭自动曝光");
}
}

12
mainwindow.h

@ -26,6 +26,8 @@ @@ -26,6 +26,8 @@
#include "twopoint.h"
#include "clhe.h"
#include "multipoint.h"
#include "autoflash.h"
#include "qfluentwidgets"
#include <QMap>
@ -90,6 +92,12 @@ private slots: @@ -90,6 +92,12 @@ private slots:
void on_comboBox_currentIndexChanged(int index);
void on_spinBox_3_valueChanged(int arg1);
void on_pushButton_11_clicked();
void on_pushButton_12_clicked();
private:
void initIns();
void initUI();
@ -120,6 +128,8 @@ private: @@ -120,6 +128,8 @@ private:
usbcontrol* ucontrol;
usbthread* usb;
autoFlash* m_af;
int type;
int rows;
int cols;
@ -183,5 +193,7 @@ private: @@ -183,5 +193,7 @@ private:
cv::Mat bpimg;//盲元点
bool b_bp;//盲元替换
bool b_af;
};
#endif // MAINWINDOW_H

178
mainwindow.ui

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1388</width>
<height>648</height>
<height>685</height>
</rect>
</property>
<property name="windowTitle">
@ -71,7 +71,7 @@ @@ -71,7 +71,7 @@
<x>0</x>
<y>0</y>
<width>658</width>
<height>555</height>
<height>592</height>
</rect>
</property>
<widget class="QLabel" name="imagelabel">
@ -103,17 +103,20 @@ @@ -103,17 +103,20 @@
</size>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="15" column="0">
<widget class="QLabel" name="label_11">
<item row="17" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>全局均方差</string>
<string>溢出点数</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_8">
<item row="16" column="2">
<widget class="QLineEdit" name="lineEdit_5"/>
</item>
<item row="8" column="0">
<widget class="QPushButton" name="pushButton_8">
<property name="text">
<string>截止点数</string>
<string>输出盲元图</string>
</property>
</widget>
</item>
@ -124,53 +127,41 @@ @@ -124,53 +127,41 @@
</property>
</widget>
</item>
<item row="16" column="0" colspan="3">
<widget class="QTextBrowser" name="textBrowser">
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
<item row="4" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>区域平均值</string>
</property>
</widget>
</item>
<item row="11" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item row="14" column="2">
<widget class="QPushButton" name="pushButton_11">
<property name="text">
<string>设置目标灰度</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QPushButton" name="pushButton_8">
<item row="1" column="0" colspan="3">
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>输出盲元图</string>
<string>区域均方差</string>
</property>
</widget>
</item>
<item row="13" column="2">
<widget class="QLineEdit" name="lineEdit_6"/>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="12" column="2">
<widget class="QLineEdit" name="lineEdit_5"/>
</item>
<item row="15" column="2">
<widget class="QLineEdit" name="lineEdit_8"/>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="pushButton_4">
<item row="8" column="2">
<widget class="QPushButton" name="pushButton_9">
<property name="text">
<string>标记为盲元</string>
<string>加载盲元图</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<item row="6" column="2">
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>中心点纵坐标</string>
<string>取消标记</string>
</property>
</widget>
</item>
@ -181,81 +172,114 @@ @@ -181,81 +172,114 @@
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<item row="5" column="2">
<widget class="QLineEdit" name="lineEdit_4"/>
</item>
<item row="9" column="0">
<widget class="QPushButton" name="pushButton_10">
<property name="text">
<string>区域均方差</string>
<string>test</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="14" column="2">
<widget class="QLineEdit" name="lineEdit_7"/>
</item>
<item row="13" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>溢出点数</string>
<item row="20" column="0" colspan="3">
<widget class="QTextBrowser" name="textBrowser">
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="19" column="2">
<widget class="QLineEdit" name="lineEdit_8"/>
</item>
<item row="18" column="2">
<widget class="QLineEdit" name="lineEdit_7"/>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="lineEdit_4"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<item row="0" column="0" colspan="3">
<widget class="TogglePushButton" name="pushButton_3">
<property name="text">
<string>中心点横坐标</string>
<string>暂停统计</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QTableWidget" name="tableWidget"/>
<item row="14" column="0">
<widget class="QSpinBox" name="spinBox_3">
<property name="maximum">
<number>16384</number>
</property>
<property name="value">
<number>6000</number>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QPushButton" name="pushButton_5">
<item row="19" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>取消标记</string>
<string>全局均方差</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="TogglePushButton" name="pushButton_3">
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>暂停统计</string>
<string>中心点纵坐标</string>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QPushButton" name="pushButton_9">
<item row="4" column="2">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>加载盲元图</string>
<string>标记为盲元</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_6">
<item row="3" column="2">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="16" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>区域平均值</string>
<string>截止点数</string>
</property>
</widget>
</item>
<item row="14" column="0">
<item row="18" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>全局平均值</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QPushButton" name="pushButton_10">
<item row="11" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="17" column="2">
<widget class="QLineEdit" name="lineEdit_6"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>test</string>
<string>中心点横坐标</string>
</property>
</widget>
</item>
<item row="15" column="2">
<widget class="QPushButton" name="pushButton_12">
<property name="text">
<string>开关自动曝光</string>
</property>
</widget>
</item>

20
menu5.cpp

@ -25,6 +25,7 @@ menu5::menu5(QWidget *parent) : @@ -25,6 +25,7 @@ menu5::menu5(QWidget *parent) :
}
});
hideui();
b_rmbld = false;
}
menu5::~menu5()
@ -39,6 +40,7 @@ void menu5::hideui() @@ -39,6 +40,7 @@ void menu5::hideui()
ui->pushButton_3->hide();
ui->tableWidget->hide();
ui->pushButton_6->hide();
ui->doubleSpinBox->hide();
}
void menu5::showui()
@ -48,6 +50,7 @@ void menu5::showui() @@ -48,6 +50,7 @@ void menu5::showui()
ui->pushButton_3->show();
ui->tableWidget->show();
ui->pushButton_6->show();
ui->doubleSpinBox->show();
}
void menu5::slotRefresh(double gray)
@ -143,3 +146,20 @@ void menu5::on_pushButton_6_clicked() @@ -143,3 +146,20 @@ void menu5::on_pushButton_6_clicked()
}
}
void menu5::on_pushButton_7_clicked()
{
b_rmbld = !b_rmbld;
emit signalrmbld(b_rmbld);
if(b_rmbld)
ui->pushButton_7->setText(u8"关闭自动去盲元");
else
ui->pushButton_7->setText(u8"开启自动去盲元");
}
void menu5::on_doubleSpinBox_valueChanged(double arg1)
{
emit signalthre(arg1);
}

8
menu5.h

@ -33,15 +33,23 @@ private slots: @@ -33,15 +33,23 @@ private slots:
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_doubleSpinBox_valueChanged(double arg1);
signals:
void signalsave();
void signalcalc(QVector<double> );
void signalsavedata(QString);
void signalloaddata(QString);
void signaloff();
void signalrmbld(bool);
void signalthre(double);
private:
Ui::menu5 *ui;
QVector<double> grays;
bool b_rmbld;
};
#endif // MENU5_H

63
menu5.ui

@ -14,31 +14,24 @@ @@ -14,31 +14,24 @@
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="6" column="0">
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>关闭校正</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="pushButton">
<item row="4" column="0">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>存32帧亮度</string>
<string>保存数据</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QPushButton" name="pushButton_4">
<item row="3" column="0">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>加载数据</string>
<string>开始计算</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="pushButton_2">
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_6">
<property name="text">
<string>开始计算</string>
<string>清空列表</string>
</property>
</widget>
</item>
@ -62,17 +55,38 @@ @@ -62,17 +55,38 @@
</column>
</widget>
</item>
<item row="4" column="0">
<widget class="QPushButton" name="pushButton_3">
<item row="8" column="0">
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>保存数据</string>
<string>关闭校正</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_6">
<item row="5" column="0">
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>清空列表</string>
<string>加载数据</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QPushButton" name="pushButton_7">
<property name="text">
<string>自动去盲元</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>存32帧亮度</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="DoubleSpinBox" name="doubleSpinBox">
<property name="value">
<double>4.000000000000000</double>
</property>
</widget>
</item>
@ -84,6 +98,11 @@ @@ -84,6 +98,11 @@
<extends>QTableWidget</extends>
<header location="global">qfluentwidgets</header>
</customwidget>
<customwidget>
<class>DoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header location="global">qfluentwidgets</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>

81
multipoint.cpp

@ -16,6 +16,8 @@ MultiPoint::MultiPoint(QObject *parent) @@ -16,6 +16,8 @@ MultiPoint::MultiPoint(QObject *parent)
stagecount =0;
ittime = 5;
enable = false;
b_rmbld = false;
b_thre = 4;
}
void MultiPoint::saveData(cv::Mat img)
@ -38,6 +40,16 @@ void MultiPoint::calcData(QVector<double> vct) @@ -38,6 +40,16 @@ void MultiPoint::calcData(QVector<double> vct)
if(stagecount<2)
return;
// cv::Mat mask(rows,cols,CV_8UC1);
// for(int i = 0;i<rows;i++){
// for(int j = 0;j<cols;j++){
// }
// }
// if(deviceid == ""){
// }
double v0 = vct.first();
@ -153,6 +165,34 @@ void MultiPoint::runData(cv::Mat img) @@ -153,6 +165,34 @@ void MultiPoint::runData(cv::Mat img)
}
}
if(!msk.empty() && b_rmbld){
for(int i = 1;i< rows-1;i++){
for(int j = 1;j<cols-1;j++){
if(msk.at<uchar>(i,j) == 1){
int n = 8- (msk.at<uchar>(i+1,j)+
msk.at<uchar>(i-1,j)+
msk.at<uchar>(i+1,j-1)+
msk.at<uchar>(i-1,j-1)+
msk.at<uchar>(i+1,j+1)+
msk.at<uchar>(i-1,j+1)+
msk.at<uchar>(i,j+1)+
msk.at<uchar>(i,j-1));
int sum = (1-msk.at<uchar>(i+1,j))*dst.at<ushort>(i+1,j)+
(1-msk.at<uchar>(i-1,j))*dst.at<ushort>(i-1,j)+
(1-msk.at<uchar>(i+1,j+1))*dst.at<ushort>(i+1,j+1)+
(1-msk.at<uchar>(i-1,j+1))*dst.at<ushort>(i-1,j+1)+
(1-msk.at<uchar>(i+1,j-1))*dst.at<ushort>(i+1,j-1)+
(1-msk.at<uchar>(i-1,j-1))*dst.at<ushort>(i-1,j-1)+
(1-msk.at<uchar>(i,j+1))*dst.at<ushort>(i,j+1)+
(1-msk.at<uchar>(i,j-1))*dst.at<ushort>(i,j-1);
if(n>0)
dst.at<ushort>(i,j) = sum/n;
else dst.at<ushort>(i,j) = 0;
}
}
}
}
emit signalsendimg(dst);
}
else{
@ -196,7 +236,7 @@ void MultiPoint::savedata(QString path, double ittime) @@ -196,7 +236,7 @@ void MultiPoint::savedata(QString path, double ittime)
{
QDir d;
d.mkdir("datas/"+path);
deviceid = path;
QFile afs("datas/"+path+"/"+QString::number(ittime,'f',2)+".tgz");
afs.open(QIODevice::ReadWrite);
@ -239,6 +279,16 @@ void MultiPoint::loaddata() @@ -239,6 +279,16 @@ void MultiPoint::loaddata()
memcpy(kstages,data.data()+sizeof(double)*rows*cols*(stagecount+1),sizeof(double)*rows*cols*(stagecount+1));
memcpy(bstages,data.data()+2*sizeof(double)*rows*cols*(stagecount+1),sizeof(double)*(stagecount+1));
msk = cv::Mat(rows,cols,CV_8UC1);
for(int i = 0;i<rows;i++){
for(int j = 0;j<cols;j++){
msk.at<uchar>(i,j) = 0;
for(int k = 0;k<stagecount;k++){
if(kstages[k*rows*cols+i*cols+j]<0 ||kstages[k*rows*cols+i*cols+j]>b_thre )
msk.at<uchar>(i,j) = 1;
}
}
}
// qDebug()<<"stagecount"<<stagecount;
ready = true;
@ -268,3 +318,32 @@ void MultiPoint::setit(double it) @@ -268,3 +318,32 @@ void MultiPoint::setit(double it)
if(enable)
loaddata();
}
void MultiPoint::setrmblk(bool b)
{
b_rmbld = b;
}
void MultiPoint::slotSetThre(double thre)
{
b_thre = thre;
if(ready){
msk = cv::Mat(rows,cols,CV_8UC1);
for(int i = 0;i<rows;i++){
for(int j = 0;j<cols;j++){
msk.at<uchar>(i,j) = 0;
for(int k = 0;k<stagecount;k++){
if(kstages[k*rows*cols+i*cols+j]<0 ||kstages[k*rows*cols+i*cols+j]>b_thre )
msk.at<uchar>(i,j) = 1;
}
}
}
QString log = u8"总共有"+QString::number(cv::sum(msk).val[0])+u8"个盲元点";
emit signalLog(log);
// qDebug()<<"stagecount"<<stagecount;
// ready = true;
}
}

8
multipoint.h

@ -36,6 +36,9 @@ public slots: @@ -36,6 +36,9 @@ public slots:
void setparas(int _row,int _col);
void setdevice(QString);
void setit(double);
void setrmblk(bool);
void slotSetThre(double);
signals:
void signalsendimg(cv::Mat);
@ -45,6 +48,7 @@ signals: @@ -45,6 +48,7 @@ signals:
void signalLog(QString);
private:
QThread* thread;
@ -72,6 +76,10 @@ private: @@ -72,6 +76,10 @@ private:
double ittime;
cv::Mat msk;
bool b_rmbld;//bool remove blind point
double b_thre;
};

Loading…
Cancel
Save