master
zhou.mengjia 2 years ago
parent c05f3c0ee0
commit ea82b6708c

Binary file not shown.

Binary file not shown.

@ -58,9 +58,17 @@ bool LXCamera::openCamera()
LxDeviceInfo device_info;
DcHandle* handlePtr = new DcHandle();
LX_STATE lx_state = DcOpenDevice(LX_OPEN_MODE::OPEN_BY_SN, m_handle.c_str(), handlePtr, &device_info);
for(int i=0;i<10;i++){
if (LX_SUCCESS == lx_state) {
break;
}
qDebug() << "TofCamera Open FailedÖØÆô´ÎÊý="<<i<<"Ïà»úid£º"<< m_handle.c_str();;
lx_state = DcOpenDevice(LX_OPEN_MODE::OPEN_BY_SN, m_handle.c_str(), handlePtr, &device_info);
}
handle = *handlePtr;
qInfo() << "openCamera3D handle:" << handle << "cameraSN:" << m_handle.c_str();
if (LX_SUCCESS != lx_state) {
QString str = QString("open device failed, open_param: %1, err = %2").arg(m_handle.c_str()).arg(lx_state);
qDebug() << str;
return false;
@ -88,18 +96,37 @@ bool LXCamera::startCamera()
//auto _time = std::chrono::system_clock::now();
LX_STATE ret;
int count = 5;
int i = 0;
for (; i <= count; i++)
{
//¸üÐÂÊý¾Ý
auto ret = DcSetCmd(handle, LX_CMD_GET_NEW_FRAME);
if (LX_SUCCESS != ret)
ret = DcSetCmd(handle, LX_CMD_GET_NEW_FRAME);
if (LX_SUCCESS == ret)
{
break;
}
if (LX_E_RECONNECTING == ret) {
std::cout << "device reconnecting" << std::endl;
}
std::this_thread::sleep_for(std::chrono::seconds(1));
if (i == 0)
{
qDebug() << "TofCamera Open Failed! DcSetCmd = " << QString::number(ret);
}
if (i != count)
{
qDebug() << "TofCamera Reopen " << QString::number(i + 1);
}
else
{
qDebug() << "TofCamera Open Failed!";
return false;
}
}
qDebug() << "TofCamera Open Succeed!";
return true;

@ -20,7 +20,7 @@ class NetControl : public QObject
Q_OBJECT
public:
NetControl(const QString& IpPath, bool bAutoReconnect = false, QObject *parent = 0);
NetControl(const QString& IpPath, bool bAutoReconnect = true, QObject *parent = 0);
~NetControl();
public:
//void deCodeMsg(QString recInfo);

@ -166,7 +166,19 @@ QString SmokeBoxIdentification::saveImage(ILImagePtr image, const cv::Mat& imgMa
std::wstring path = filePath.toStdWString();
if (!imgMat3D.empty())// 3DÏà»úÊý¾Ý
{
cv::imwrite(filePath.toStdString(), imgMat3D);
// 设置旋转中心和旋转角度
cv::Point2f center(imgMat3D.cols / 2.0, imgMat3D.rows / 2.0);
double angle = 0.0; // 旋转角度,单位为度
// 计算旋转矩阵
cv::Mat rotation_matrix = cv::getRotationMatrix2D(center, angle, 1.0); // 最后一个参数为缩放比例,这里不缩放
// 应用旋转矩阵进行仿射变换
cv::Mat rotated_image;
cv::warpAffine(imgMat3D, rotated_image, rotation_matrix, imgMat3D.size());
cv::imwrite(filePath.toStdString(), rotated_image);
int lastPos = filePath.lastIndexOf('.');
QString prePath = filePath.left(lastPos);
QString pclPath = prePath + ".pcd";
@ -490,6 +502,7 @@ void SmokeBoxIdentification::calculate(int stocketID)
if (!imgInfo.imageFixed->Void())
{
QString filePath;
//½øÐмÆËãÆ·¹æ
if (m_pCategoryMatcher->smokeMatch(typeNum, imgInfo.imageFixed, stocket.id.toInt()))
{
@ -500,7 +513,7 @@ void SmokeBoxIdentification::calculate(int stocketID)
FileInfo fileInfo = imgInfo.saveImgInfo;
QString fileName = QString("%1_%2_rlt%3").arg(fileInfo.strId)
.arg(m_currtStockCheckInfo.smokeTypeNum).arg(".jpg");
QString filePath = QString("%1\\%2").arg(dataSaveFolder).arg(fileName);
filePath = QString("%1\\%2").arg(dataSaveFolder).arg(fileName);
m_pCategoryMatcher->saveResultsImage(filePath);
bIsMatch = true;
@ -510,11 +523,31 @@ void SmokeBoxIdentification::calculate(int stocketID)
{
str = QString("[%1]:Camera %2 Match Failed!").arg(stocket.id).arg(imgInfo.cameraSn);
qWarning() << str;
QString filePath = dataSaveFolder + QString("\\%1_error.jpg")
filePath = dataSaveFolder + QString("\\%1_error.jpg")
.arg(stocket.smokeTypeNum);
m_pCategoryMatcher->saveResultsImage(filePath);
m_stocketList[stocketID].imagesPathList.append(filePath.right(filePath.length() - 1));
}
// 读取原始图像
cv::Mat original_image = cv::imread(filePath.toStdString());
if (original_image.empty()) {
std::cerr << "Failed to read image file!" << std::endl;
}
// 设置压缩参数
std::vector<int> compression_params;
compression_params.push_back(cv::IMWRITE_JPEG_QUALITY);
compression_params.push_back(8); // JPEG压缩质量范围0-100
// 压缩图像
bool result = cv::imwrite(filePath.toStdString(), original_image, compression_params);
if (!result) {
std::cerr << "Failed to write compressed image file!" << std::endl;
}
std::cout << "Image compression completed successfully." << std::endl;
}
else

Loading…
Cancel
Save