调整位置
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
|
||||
// dismissed with Cancel
|
||||
}
|
||||
else if (nResponse == -1) {
|
||||
printf("先安装sdk\n");
|
||||
}
|
||||
|
||||
// Since the dialog has been closed, return FALSE so that we exit the
|
||||
// application, rather than start the application's message pump.
|
||||
|
@ -165,16 +165,16 @@ BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP
|
||||
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
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "image measure"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||
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
|
||||
CONTROL "",IDC_TAB1,"SysTabControl32",0x0,100,5,740,480
|
||||
PUSHBUTTON "最小化",IDC_BTN_MINIMIZE,845,4,50,12
|
||||
CONTROL "",IDC_TAB1,"SysTabControl32",0x0,100,5,720,480
|
||||
PUSHBUTTON "最小化",IDC_BTN_MINIMIZE,757,4,50,12
|
||||
END
|
||||
|
||||
IDD_FORM2 DIALOGEX 0, 0, 453, 304
|
||||
|
@ -117,6 +117,7 @@ void CDN_sampleDlg::SelectOneImg() {
|
||||
m_tab.SetCurSel(0);
|
||||
m_f1.ShowWindow(SW_SHOW);
|
||||
m_f2.ShowWindow(SW_HIDE);
|
||||
m_video.ShowWindow(SW_HIDE);
|
||||
m_f2.SetMicroImage(m_ImgVec[index]);
|
||||
|
||||
if (m_f1.hb != NULL) {
|
||||
@ -165,24 +166,30 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
||||
|
||||
m_tab.InsertItem(0, _T("抓拍图片"));
|
||||
m_tab.InsertItem(1, _T("距离测量"));
|
||||
m_tab.InsertItem(2, _T("实时预览"));
|
||||
//m_f1.SetParent(&m_tab);
|
||||
m_f1.Create(IDD_FORM2, &m_tab);
|
||||
m_f2.Create(IDD_CALIMAGE, &m_tab);
|
||||
m_video.SetParent(&m_tab);
|
||||
|
||||
|
||||
|
||||
RECT rect;
|
||||
m_tab.GetClientRect(&rect);
|
||||
rect.top += 22;//对坐标做一些微调,这26是选项卡按钮的高度
|
||||
rect.left += 2;//这是边框的宽度
|
||||
rect.top += 22; //对坐标做一些微调,这26是选项卡按钮的高度
|
||||
rect.left += 2; //这是边框的宽度
|
||||
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_f1.MoveWindow(&rect);
|
||||
m_f2.MoveWindow(&rect);
|
||||
m_f1.ShowWindow(SW_SHOW);
|
||||
m_f2.ShowWindow(SW_HIDE);
|
||||
m_video.ShowWindow(SW_HIDE);
|
||||
|
||||
m_f2.SetImgPos();
|
||||
|
||||
|
||||
|
||||
CDC* pDC = GetDC(); // 获取设备上下文
|
||||
TEXTMETRIC tm; // 获取字体的高度
|
||||
pDC->GetTextMetrics(&tm);
|
||||
@ -199,7 +206,8 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
||||
Test();
|
||||
}
|
||||
|
||||
if (m_video.GetVideoDeviceCount() == 0) return false;
|
||||
|
||||
if (m_video.GetVideoDeviceCount() == 0) return false;
|
||||
|
||||
m_video.SetUseVideoFilter(1);
|
||||
m_video.SetConnected(TRUE);
|
||||
@ -296,12 +304,15 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
||||
//m_green = m_video.GetAWBG(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
|
||||
AfxMessageBox(_T("EnableMicroTouch 启用"), MB_ICONHAND);
|
||||
//AfxMessageBox(_T("EnableMicroTouch 启用"), MB_ICONHAND);
|
||||
}
|
||||
else {
|
||||
AfxMessageBox(_T("EnableMicroTouch 取消"), MB_ICONERROR);
|
||||
AfxMessageBox(_T("EnableMicroTouch 启用失败"), MB_ICONERROR);
|
||||
}
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
@ -309,7 +320,7 @@ BOOL CDN_sampleDlg::OnInitDialog()
|
||||
|
||||
|
||||
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) {
|
||||
std::string imgpath = CW2A(m_ExePath + path[i]);
|
||||
cv::Mat imgMat = cv::imread(imgpath);
|
||||
@ -443,16 +454,24 @@ void CDN_sampleDlg::ChangeTab(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
m_f1.ClearImg();
|
||||
m_f1.ShowWindow(SW_SHOW);
|
||||
m_f2.ShowWindow(SW_HIDE);
|
||||
m_video.ShowWindow(SW_HIDE);
|
||||
break;
|
||||
case 1:
|
||||
m_f2.ClearImg();
|
||||
m_f2.ShowWindow(SW_SHOW);
|
||||
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;
|
||||
default:
|
||||
m_f1.ClearImg();
|
||||
m_f1.ShowWindow(SW_SHOW);
|
||||
m_f2.ShowWindow(SW_HIDE);
|
||||
m_video.ShowWindow(SW_HIDE);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -465,13 +484,14 @@ BOOL CDN_sampleDlg::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
if (WM_RBUTTONUP == pMsg->message)
|
||||
{
|
||||
if (m_listBox.GetCount() == 0) return FALSE;
|
||||
CPoint pt;
|
||||
CRect rtClient;
|
||||
m_listBox.GetClientRect(&rtClient);
|
||||
m_listBox.ClientToScreen(&rtClient);
|
||||
INT iScrollPos = m_listBox.GetScrollPos(SB_VERT);
|
||||
GetCursorPos(&pt);
|
||||
int nItemHeight = m_nFontHeight; // 假设加上一些额外空间作为边距
|
||||
int nItemHeight = m_listBox.GetItemHeight(0);
|
||||
int iSelect = (pt.y - rtClient.top + iScrollPos * nItemHeight) / nItemHeight;
|
||||
if (iSelect < m_listBox.GetCount()) {
|
||||
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() {
|
||||
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是否在图像范围内
|
||||
Mat cropMat1 = m_image(cropRect1);
|
||||
|
||||
Rect cropRect2(0, m_height / 2 - 25, 50, 50); // 定义感兴趣的区域的矩形框
|
||||
cropRect2 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
||||
Rect cropRect2(0, m_height / 2 - 25, 50, 50); //中左位置
|
||||
cropRect2 &= Rect(0, 0, m_width, m_height);
|
||||
Mat cropMat2 = m_image(cropRect2);
|
||||
|
||||
Rect cropRect3(m_width - 25, m_height / 2 - 25, 50, 50); // 定义感兴趣的区域的矩形框
|
||||
cropRect3 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
||||
Rect cropRect3(m_width - 25, m_height / 2 - 25, 50, 50); //中右位置
|
||||
cropRect3 &= Rect(0, 0, m_width, m_height);
|
||||
Mat cropMat3 = m_image(cropRect3);
|
||||
|
||||
Rect cropRect4(0, 0, 25, 25); // 定义感兴趣的区域的矩形框
|
||||
cropRect4 &= Rect(0, 0, m_width, m_height); // 检查ROI是否在图像范围内
|
||||
Rect cropRect4(0, 0, 25, 25); //左上角位置
|
||||
cropRect4 &= Rect(0, 0, m_width, m_height);
|
||||
Mat cropMat4 = m_image(cropRect4);
|
||||
|
||||
StatisticsRGB(cropMat1);
|
||||
@ -420,12 +420,20 @@ void MicroImage::CalDistance() {
|
||||
m_image.release();
|
||||
m_image = cv::Mat(m_height, m_width, CV_8UC3, m_OriginData).clone();
|
||||
//cv::imwrite(m_ImgName, m_image);
|
||||
StandardLineDetect(); //标准线段检测
|
||||
//StandardLineDetect(); //标准线段检测 先固定值
|
||||
StatisticsBGColor();
|
||||
SquareRemove();
|
||||
//IsLandRemove();
|
||||
|
||||
//#if 0
|
||||
// IsLandRemove();
|
||||
// Binarization();
|
||||
//
|
||||
//#endif
|
||||
|
||||
|
||||
int dx = 0, dy = 0;
|
||||
CalBorderCrop(dx, dy);
|
||||
m_knowLength = 148; //先固定
|
||||
m_DistanceY = 0.2 * dy / m_knowLength;
|
||||
m_DistanceX = 0.2 * dx / m_knowLength;
|
||||
|
||||
|
@ -42,7 +42,7 @@ public:
|
||||
uint m_TotalSize; //图片大小
|
||||
private:
|
||||
cv::Mat m_image; //图片
|
||||
int m_knowLength; //已知0.2mm占用的像素个数
|
||||
int m_knowLength = 148; //已知0.2mm占用的像素个数 先固定
|
||||
std::set<int> m_RgbSet; //背景rgb集合
|
||||
|
||||
float m_Radio; //宽高比
|
||||
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user