Saturday, July 14, 2012

[OpenCV] 將二張影像合併為一張(使用cv::Mat)

以下程式碼使用 cv::Mat 將二張相同大小的影像,橫向合併為一張。


Mat img1 = imread(imageleft, -1);
Mat img2 = imread(imageright, -1);
Size img_size = img1.size();


Mat img_new(img_size.height, img_size.width*2, img1.type() );Mat part;
part = img_new(cv::Rect(0,0,img_size.width,img_size.height)); 
img1.copyTo(part);
//重點在這裏, 將 part 指向新影像的右半邊, 然後將第二張影像(img2)複製過去。
part =  pair(cv::Rect(img_size.width,0,img_size.width,img_size.height)); 
img2.copyTo(part);
imwrite( new_image_naem, img_new);

Thursday, July 12, 2012

[OpenCV] cv::Mat 與 CvMat, IplImage 之轉換

參考資料:http://hi.baidu.com/windroc/blog/item/e5c2d3c4707fead938db4907.html

1. IplImage => cv::Mat

IplImage *iplImage = cvLoadImage( image_filename, 1);

cv::Mat mat_image(iplImage);

or

cv::Mat mat_image = iplImage;


2. cv::Mat => IplImage

cv::Mat mat_image;

IplImage iplImage = mat_image ;


3. CvMat => cv::Mat

CvMat *cvmat_image;

cv::Mat mat_image(cvmat_image);


4. cv::Mat => CvMat

cv::Mat mat_image;

CvMat cvmat_image = mat_image ;

Tuesday, July 10, 2012

MDI Application 啟動時檢查命令列參數並開啟 MDI Child Form (C++ Builder)

在MDI Application 啟動時檢查命令列參數並開啟 MDI Child Form。
在程式啟動時,若於 MDI Form 尚未建立完成時,例如Constructro, OnCreate, OnShow 等函數開啟 MDI Child Form 會產生以下錯誤:

Cannot create form. No MDI forms are currently active.

MDI Child Form 必須等 MDI Form 物件建立之後才可開啟。

這個問題有二個解決方法:參考來源:http://www.delphigroups.info/3/4/437727.html


法一:增加自建訊息(Message)

1. 增加一個自建設息,例如:APPWM_CHECKPARAMS

2. 在 MDI Form 的 Constructor 送出這個訊息

PostMessage(Handle, APPWM_CHECKPARAMS, 0, 0);

3. 覆寫 MDIForm 的 WndProc,若 MDIForm收到 APPWM_CHECKPARAMS 則檢查命令列參數並開啟 MDI Chile Form。

void __fastcall TForm1::WndProc(TMessage &Message)

{
    if( Message.Msg == APPWM_CHECKPARAMS )
    {
        // check for the filename here, opening child windows if needed...
    }
    else
        TForm::WndProc(Message);
    }
}


法二:在 OnPaint

(參考來源)

在程式中增加一個布林變數,判斷OnPaint是否為第一次執行。若是第一次則檢查命令列參數並開啟 MDI Chile Form。但因為每次 OnPaint 是都必須判斷,不是好的方法。

Monday, July 2, 2012

螢幕錄製程式(Free)

CamStudio Recorder

錄製軟體操作示範影片,操作簡易。錄製的影片可用 AVI 或 flash 格式儲存。
 
官方網站:http://camstudio.org/
其他高手的介紹文章:http://a55951234.twgg.org/?p=575

[Qt] 執行檔需要哪些 Dll?

 1. 使用 Qt  的 windeployqt.exe 工具 (在 C:\Qt\Qt5.14.1\5.14.1\msvc2017\bin\)。   a. 把執行檔 myProgram.exe 放在某個資料夾。   b. 在檔案總管這個資料夾按 Shift 和滑鼠右鍵,開啟 Po...