簡體   English   中英

OpenCv邊框頂部和左側OpenGL框架C ++

[英]OpenCv border top and left OpenGL frame c++

我正在使用Windows 7上啟用OPENGL和CUDA的OpenCv 3.3的自編譯。

我無法在全屏模式下顯示圖像而沒有任何邊框。 我使用以下最小示例進行測試:

// Name of window
std::string name = "Test Window";

// Create window
cv::namedWindow(name, CV_WINDOW_OPENGL | cv::WINDOW_NORMAL);
cvSetWindowProperty(name.c_str(), CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);

// Create a frame at resolution
cv::Size size = cv::Size(1920, 1080);  
cv::cuda::GpuMat emptyFrame;
cv::Mat frame(size, CV_8UC(3));

// Fill it in blue
cv::rectangle(frame, cv::Rect(0, 0, size.width, size.height), cv::Scalar(255, 0, 0), CV_FILLED);
emptyFrame.upload(frame);

// Size window to full resolution
cv::resizeWindow(name, size.width, size.height);

while(1)
{
    // Display an empty frame
    cv::imshow(name, emptyFrame);
    cv::waitKey(40);
}

這段代碼向我展示了一個全屏的窗口,用藍色繪制,但是它在頂部和左側邊框上保留了一個像素邊框: 左側和頂部灰色邊框

邊界似乎不是這里說明的邊界: https : //stackoverflow.com/a/38494752/1570628

實際上,這是OpenCv創建的主窗口的背景。 挖掘到OpenCV的代碼,它effectivelly創建cvNamedWindow函數內部2個窗口:

mainhWnd = CreateWindow( "Main HighGUI class", name, defStyle | WS_OVERLAPPED, rect.x, rect.y, rect.width, rect.height, 0, 0, hg_hinstance, 0 );
if( !mainhWnd )
CV_ERROR( CV_StsError, "Frame window can not be created" );

ShowWindow(mainhWnd, SW_SHOW);

//YV- remove one border by changing the style
hWnd = CreateWindow("HighGUI class", "", (defStyle & ~WS_SIZEBOX) | WS_CHILD, CW_USEDEFAULT, 0, rect.width, rect.height, mainhWnd, 0, hg_hinstance, 0);
if( !hWnd )
CV_ERROR( CV_StsError, "Frame window can not be created" );

因此,我們看到的“邊界”是mainhWnd (Main HighGUI類)顏色。 但是,這意味着我以藍色顯示的圖像向屏幕的頂部和底部偏移了一個像素,所以我在底部和右側松動了1行像素,因為它們溢出了屏幕。

我可以看到這種情況,因為在雙屏幕上,我可以在第二個屏幕上看到正確的像素溢出線。 而且,如果我在圖像的最后一行繪制一條水平線,它不會出現,在圖像的最后一列的垂直線上也會出現同樣的情況。

對於測試解決方案,我嘗試通過使用許多標志組合直接在OpenCv代碼中更改mainhWndhWnd的樣式,也使用WS_POPUP進行測試,但是無論如何,我總是有此頂部和左側邊界。

我也在這里嘗試了解決方案,但它沒有刪除邊框: https : //stackoverflow.com/a/6512315/1570628

有人知道我的問題嗎? 問候。

嘿,這對我有用(至少它在python上有用,而且由於您只需要更改一個標志,我相信這也對您有用)

將此標志“ CV_WINDOW_OPENGL | cv :: WINDOW_NORMAL)”更改為該標志“ WINDOW_FREERATIO”

瞧! 問題解決了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM