调整位置
This commit is contained in:
parent
d337685043
commit
205e851201
@ -70,6 +70,9 @@ BOOL CDN_sampleApp::InitInstance()
|
|||||||
// TODO: Place code here to handle when the dialog is
|
// TODO: Place code here to handle when the dialog is
|
||||||
// dismissed with Cancel
|
// dismissed with Cancel
|
||||||
}
|
}
|
||||||
|
else if (nResponse == -1) {
|
||||||
|
printf("先安装sdk\n");
|
||||||
|
}
|
||||||
|
|
||||||
// Since the dialog has been closed, return FALSE so that we exit the
|
// Since the dialog has been closed, return FALSE so that we exit the
|
||||||
// application, rather than start the application's message pump.
|
// application, rather than start the application's message pump.
|
||||||
|
@ -165,16 +165,16 @@ BEGIN
|
|||||||
DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP
|
DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_DN_SAMPLE_DIALOG DIALOGEX 0, 0, 900, 490
|
IDD_DN_SAMPLE_DIALOG DIALOGEX 0, 0, 827, 490
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_APPWINDOW
|
EXSTYLE WS_EX_APPWINDOW
|
||||||
CAPTION "image measure"
|
CAPTION "image measure"
|
||||||
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "",IDC_VIDEO,"{922FB007-DD9A-11D3-BD8D-DAAFCB8D9378}",WS_TABSTOP,842,35,52,45
|
CONTROL "",IDC_VIDEO,"{922FB007-DD9A-11D3-BD8D-DAAFCB8D9378}",WS_TABSTOP, 100, 19, 720, 466 //842,35,52,45
|
||||||
LISTBOX IDC_LIST2,5,5,90,480,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
LISTBOX IDC_LIST2,5,5,90,480,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "",IDC_TAB1,"SysTabControl32",0x0,100,5,740,480
|
CONTROL "",IDC_TAB1,"SysTabControl32",0x0,100,5,720,480
|
||||||
PUSHBUTTON "最小化",IDC_BTN_MINIMIZE,845,4,50,12
|
PUSHBUTTON "最小化",IDC_BTN_MINIMIZE,757,4,50,12
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_FORM2 DIALOGEX 0, 0, 453, 304
|
IDD_FORM2 DIALOGEX 0, 0, 453, 304
|
||||||
|
@ -117,6 +117,7 @@ void CDN_sampleDlg::SelectOneImg() {
|
|||||||
m_tab.SetCurSel(0);
|
m_tab.SetCurSel(0);
|
||||||
m_f1.ShowWindow(SW_SHOW);
|
m_f1.ShowWindow(SW_SHOW);
|
||||||
m_f2.ShowWindow(SW_HIDE);
|
m_f2.ShowWindow(SW_HIDE);
|
||||||
|
m_video.ShowWindow(SW_HIDE);
|
||||||
m_f2.SetMicroImage(m_ImgVec[index]);
|
m_f2.SetMicroImage(m_ImgVec[index]);
|
||||||
|
|
||||||
if (m_f1.hb != NULL) {
|
if (m_f1.hb != NULL) {
|
||||||
@ -165,24 +166,30 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
|||||||
|
|
||||||
m_tab.InsertItem(0, _T("抓拍图片"));
|
m_tab.InsertItem(0, _T("抓拍图片"));
|
||||||
m_tab.InsertItem(1, _T("距离测量"));
|
m_tab.InsertItem(1, _T("距离测量"));
|
||||||
|
m_tab.InsertItem(2, _T("实时预览"));
|
||||||
//m_f1.SetParent(&m_tab);
|
//m_f1.SetParent(&m_tab);
|
||||||
m_f1.Create(IDD_FORM2, &m_tab);
|
m_f1.Create(IDD_FORM2, &m_tab);
|
||||||
m_f2.Create(IDD_CALIMAGE, &m_tab);
|
m_f2.Create(IDD_CALIMAGE, &m_tab);
|
||||||
|
m_video.SetParent(&m_tab);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RECT rect;
|
RECT rect;
|
||||||
m_tab.GetClientRect(&rect);
|
m_tab.GetClientRect(&rect);
|
||||||
rect.top += 22;//对坐标做一些微调,这26是选项卡按钮的高度
|
rect.top += 22; //对坐标做一些微调,这26是选项卡按钮的高度
|
||||||
rect.left += 2;//这是边框的宽度
|
rect.left += 2; //这是边框的宽度
|
||||||
m_f1.SetWindowPos(NULL, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);
|
m_f1.SetWindowPos(NULL, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);
|
||||||
m_f2.SetWindowPos(NULL, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);
|
m_f2.SetWindowPos(NULL, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);
|
||||||
|
|
||||||
m_f1.MoveWindow(&rect);
|
m_f1.MoveWindow(&rect);
|
||||||
m_f2.MoveWindow(&rect);
|
m_f2.MoveWindow(&rect);
|
||||||
m_f1.ShowWindow(SW_SHOW);
|
m_f1.ShowWindow(SW_SHOW);
|
||||||
m_f2.ShowWindow(SW_HIDE);
|
m_f2.ShowWindow(SW_HIDE);
|
||||||
|
m_video.ShowWindow(SW_HIDE);
|
||||||
|
|
||||||
m_f2.SetImgPos();
|
m_f2.SetImgPos();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CDC* pDC = GetDC(); // 获取设备上下文
|
CDC* pDC = GetDC(); // 获取设备上下文
|
||||||
TEXTMETRIC tm; // 获取字体的高度
|
TEXTMETRIC tm; // 获取字体的高度
|
||||||
pDC->GetTextMetrics(&tm);
|
pDC->GetTextMetrics(&tm);
|
||||||
@ -199,7 +206,8 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
|||||||
Test();
|
Test();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_video.GetVideoDeviceCount() == 0) return false;
|
|
||||||
|
if (m_video.GetVideoDeviceCount() == 0) return false;
|
||||||
|
|
||||||
m_video.SetUseVideoFilter(1);
|
m_video.SetUseVideoFilter(1);
|
||||||
m_video.SetConnected(TRUE);
|
m_video.SetConnected(TRUE);
|
||||||
@ -296,12 +304,15 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
|||||||
//m_green = m_video.GetAWBG(m_device.GetCurSel());
|
//m_green = m_video.GetAWBG(m_device.GetCurSel());
|
||||||
//m_blue = m_video.GetAWBB(m_device.GetCurSel());
|
//m_blue = m_video.GetAWBB(m_device.GetCurSel());
|
||||||
|
|
||||||
|
////设置二值化拍照
|
||||||
|
//m_video.put_VideoProcAmp(-106, 0);//treshold
|
||||||
|
//m_video.put_VideoProcAmp(-107, RGB(0, 0, 0));//color
|
||||||
|
|
||||||
if (!m_video.EnableMicroTouch(true)) { //设置touch enable 启用返回false
|
if (!m_video.EnableMicroTouch(true)) { //设置touch enable 启用返回false
|
||||||
AfxMessageBox(_T("EnableMicroTouch 启用"), MB_ICONHAND);
|
//AfxMessageBox(_T("EnableMicroTouch 启用"), MB_ICONHAND);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
AfxMessageBox(_T("EnableMicroTouch 取消"), MB_ICONERROR);
|
AfxMessageBox(_T("EnableMicroTouch 启用失败"), MB_ICONERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE; // return TRUE unless you set the focus to a control
|
return TRUE; // return TRUE unless you set the focus to a control
|
||||||
@ -309,7 +320,7 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
|||||||
|
|
||||||
|
|
||||||
void CDN_sampleDlg::Test() {
|
void CDN_sampleDlg::Test() {
|
||||||
CString path[] = {L"\\DoniImage\\1-1.png" ,L"\\DoniImage\\1111.png",L"\\DoniImage\\1112.png" };
|
CString path[] = {L"\\DoniImage\\1-1.png" ,L"\\DoniImage\\1111.png",L"\\DoniImage\\1112.png",L"\\DoniImage\\2222.png" };
|
||||||
for (int i = 0; i < sizeof(path) / sizeof(CString); ++i) {
|
for (int i = 0; i < sizeof(path) / sizeof(CString); ++i) {
|
||||||
std::string imgpath = CW2A(m_ExePath + path[i]);
|
std::string imgpath = CW2A(m_ExePath + path[i]);
|
||||||
cv::Mat imgMat = cv::imread(imgpath);
|
cv::Mat imgMat = cv::imread(imgpath);
|
||||||
@ -443,16 +454,24 @@ void CDN_sampleDlg::ChangeTab(NMHDR* pNMHDR, LRESULT* pResult)
|
|||||||
m_f1.ClearImg();
|
m_f1.ClearImg();
|
||||||
m_f1.ShowWindow(SW_SHOW);
|
m_f1.ShowWindow(SW_SHOW);
|
||||||
m_f2.ShowWindow(SW_HIDE);
|
m_f2.ShowWindow(SW_HIDE);
|
||||||
|
m_video.ShowWindow(SW_HIDE);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
m_f2.ClearImg();
|
m_f2.ClearImg();
|
||||||
m_f2.ShowWindow(SW_SHOW);
|
m_f2.ShowWindow(SW_SHOW);
|
||||||
m_f1.ShowWindow(SW_HIDE);
|
m_f1.ShowWindow(SW_HIDE);
|
||||||
|
m_video.ShowWindow(SW_HIDE);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
m_f2.ShowWindow(SW_HIDE);
|
||||||
|
m_f1.ShowWindow(SW_HIDE);
|
||||||
|
m_video.ShowWindow(SW_SHOW);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_f1.ClearImg();
|
m_f1.ClearImg();
|
||||||
m_f1.ShowWindow(SW_SHOW);
|
m_f1.ShowWindow(SW_SHOW);
|
||||||
m_f2.ShowWindow(SW_HIDE);
|
m_f2.ShowWindow(SW_HIDE);
|
||||||
|
m_video.ShowWindow(SW_HIDE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -465,13 +484,14 @@ BOOL CDN_sampleDlg::PreTranslateMessage(MSG* pMsg)
|
|||||||
{
|
{
|
||||||
if (WM_RBUTTONUP == pMsg->message)
|
if (WM_RBUTTONUP == pMsg->message)
|
||||||
{
|
{
|
||||||
|
if (m_listBox.GetCount() == 0) return FALSE;
|
||||||
CPoint pt;
|
CPoint pt;
|
||||||
CRect rtClient;
|
CRect rtClient;
|
||||||
m_listBox.GetClientRect(&rtClient);
|
m_listBox.GetClientRect(&rtClient);
|
||||||
m_listBox.ClientToScreen(&rtClient);
|
m_listBox.ClientToScreen(&rtClient);
|
||||||
INT iScrollPos = m_listBox.GetScrollPos(SB_VERT);
|
INT iScrollPos = m_listBox.GetScrollPos(SB_VERT);
|
||||||
GetCursorPos(&pt);
|
GetCursorPos(&pt);
|
||||||
int nItemHeight = m_nFontHeight; // 假设加上一些额外空间作为边距
|
int nItemHeight = m_listBox.GetItemHeight(0);
|
||||||
int iSelect = (pt.y - rtClient.top + iScrollPos * nItemHeight) / nItemHeight;
|
int iSelect = (pt.y - rtClient.top + iScrollPos * nItemHeight) / nItemHeight;
|
||||||
if (iSelect < m_listBox.GetCount()) {
|
if (iSelect < m_listBox.GetCount()) {
|
||||||
m_listBox.SetCurSel(iSelect);
|
m_listBox.SetCurSel(iSelect);
|
||||||
|
BIN
DN_sample/DN_sampleDlg.cpp.bak
Normal file
BIN
DN_sample/DN_sampleDlg.cpp.bak
Normal file
Binary file not shown.
@ -58,20 +58,20 @@ void MicroImage::CropByBorder(int yBegin, int yEnd, int xBegin, int xEnd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MicroImage::StatisticsBGColor() {
|
void MicroImage::StatisticsBGColor() {
|
||||||
Rect cropRect1(m_width / 2 - 40, m_height / 2 - 40, 80, 80); // 定义感兴趣的区域的矩形框
|
Rect cropRect1(m_width / 2 - 40, m_height / 2 - 40, 80, 80); // 中心位置
|
||||||
cropRect1 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
cropRect1 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
||||||
Mat cropMat1 = m_image(cropRect1);
|
Mat cropMat1 = m_image(cropRect1);
|
||||||
|
|
||||||
Rect cropRect2(0, m_height / 2 - 25, 50, 50); // 定义感兴趣的区域的矩形框
|
Rect cropRect2(0, m_height / 2 - 25, 50, 50); //中左位置
|
||||||
cropRect2 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
cropRect2 &= Rect(0, 0, m_width, m_height);
|
||||||
Mat cropMat2 = m_image(cropRect2);
|
Mat cropMat2 = m_image(cropRect2);
|
||||||
|
|
||||||
Rect cropRect3(m_width - 25, m_height / 2 - 25, 50, 50); // 定义感兴趣的区域的矩形框
|
Rect cropRect3(m_width - 25, m_height / 2 - 25, 50, 50); //中右位置
|
||||||
cropRect3 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
cropRect3 &= Rect(0, 0, m_width, m_height);
|
||||||
Mat cropMat3 = m_image(cropRect3);
|
Mat cropMat3 = m_image(cropRect3);
|
||||||
|
|
||||||
Rect cropRect4(0, 0, 25, 25); // 定义感兴趣的区域的矩形框
|
Rect cropRect4(0, 0, 25, 25); //左上角位置
|
||||||
cropRect4 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
cropRect4 &= Rect(0, 0, m_width, m_height);
|
||||||
Mat cropMat4 = m_image(cropRect4);
|
Mat cropMat4 = m_image(cropRect4);
|
||||||
|
|
||||||
StatisticsRGB(cropMat1);
|
StatisticsRGB(cropMat1);
|
||||||
@ -420,12 +420,20 @@ void MicroImage::CalDistance() {
|
|||||||
m_image.release();
|
m_image.release();
|
||||||
m_image = cv::Mat(m_height, m_width, CV_8UC3, m_OriginData).clone();
|
m_image = cv::Mat(m_height, m_width, CV_8UC3, m_OriginData).clone();
|
||||||
//cv::imwrite(m_ImgName, m_image);
|
//cv::imwrite(m_ImgName, m_image);
|
||||||
StandardLineDetect(); //标准线段检测
|
//StandardLineDetect(); //标准线段检测 先固定值
|
||||||
StatisticsBGColor();
|
StatisticsBGColor();
|
||||||
SquareRemove();
|
SquareRemove();
|
||||||
//IsLandRemove();
|
|
||||||
|
//#if 0
|
||||||
|
// IsLandRemove();
|
||||||
|
// Binarization();
|
||||||
|
//
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
|
||||||
int dx = 0, dy = 0;
|
int dx = 0, dy = 0;
|
||||||
CalBorderCrop(dx, dy);
|
CalBorderCrop(dx, dy);
|
||||||
|
m_knowLength = 148; //先固定
|
||||||
m_DistanceY = 0.2 * dy / m_knowLength;
|
m_DistanceY = 0.2 * dy / m_knowLength;
|
||||||
m_DistanceX = 0.2 * dx / m_knowLength;
|
m_DistanceX = 0.2 * dx / m_knowLength;
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ public:
|
|||||||
uint m_TotalSize; //图片大小
|
uint m_TotalSize; //图片大小
|
||||||
private:
|
private:
|
||||||
cv::Mat m_image; //图片
|
cv::Mat m_image; //图片
|
||||||
int m_knowLength; //已知0.2mm占用的像素个数
|
int m_knowLength = 148; //已知0.2mm占用的像素个数 先固定
|
||||||
std::set<int> m_RgbSet; //背景rgb集合
|
std::set<int> m_RgbSet; //背景rgb集合
|
||||||
|
|
||||||
float m_Radio; //宽高比
|
float m_Radio; //宽高比
|
||||||
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user