Skip to content
/ KhuCv Public

KhuCv: Open development source for computer vision (Kyung Hee University, Data Analysis & Vision Intelligence)

Notifications You must be signed in to change notification settings

NizeLee/KhuCv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KhuCv

  • KhuCv: Open development source for computer vision (Kyung Hee University, Data Analysis & Vision Intelligence)
  • C++ (wxWidgets + OpenCV), C++17

Introduction

  • Open program sources
  • wxWidgets 3.x + OpenCV 4.x
  • Files open by OpenCV
  • Files save by OpenCV (individual image)
  • Images can be displayed in any position and can be moved by mouse
  • Messages using format specifiers can be written to the output window (list box)
  • Sequence processing (webcam, image sequence, video file)

Environment setting

  • wxWidgets 3.x

    • Windows (+Visual Studio)
    • Linux (Ubuntu)
    • Mac
      • Download wxWidgets source code from https://www.wxwidgets.org/downloads/
      • $ mkdir build-cocoa
      • [$ mkdir build-cocoa-debug]
      • $ cd build-cocoa
      • [$ cd build-cocoa-debug]
      • $ ../configure --with-macosx-version-min
      • [$ ../configure –-enable-debug --with-macosx-version-min]
      • $ make
      • $ sudo su
      • make install
      • exit
      • $ cd samples
      • $ make
      • $cd ../demos
      • $make
  • OpenCV 4.x

  • Build

    • MDI (multiple-document interface, default), SDI (single-document interface, define _KHUCV_SDI)
    • Windows (+Visual Studio) I
    • Windows (+Visual Studio) II
      • Run "Developer Command Prompt for VS 20XX"
      • $ cd build-windows
      • $ [MDI] cmake . -A x64 -T host=x64 -DWX_ROOTDIR=[DIR] -DOPENCV_ROOTDIR=[DIR]
        • e.g.) cmake . -A x64 -T host=x64 -DWX_ROOTDIR="G:/Cpp_Libs/wxWidgets/wxWidgets-3.1.6" -DOPENCV_ROOTDIR="G:/Cpp_Libs/OpenCV/OpenCV_64/install"
        • e.g.) cmake . -A x64 -T host=x64 -DWX_ROOTDIR="G:/Cpp_Libs/wxWidgets/wxWidgets-3.1.6" -DOPENCV_ROOTDIR="G:/Cpp_Libs/OpenCV/build"
      • $ [SDI] cmake . -DSDI=True -A x64 -T host=x64 -DWX_ROOTDIR=[DIR] -DOPENCV_ROOTDIR=[DIR]
        • e.g.) cmake . -DSDI=True -A x64 -T host=x64 -DWX_ROOTDIR="G:/Cpp_Libs/wxWidgets/wxWidgets-3.1.6" -DOPENCV_ROOTDIR="G:/Cpp_Libs/OpenCV/OpenCV_64/install"
        • e.g.) cmake . -DSDI=True -A x64 -T host=x64 -DWX_ROOTDIR="G:/Cpp_Libs/wxWidgets/wxWidgets-3.1.6" -DOPENCV_ROOTDIR="G:/Cpp_Libs/OpenCV/build"
      • $ [MDI] msbuild KhuCv.vcxproj /p:configuration=release /p:platform=x64 /p:CharacterSet=Unicode
      • $ [SDI] msbuild KhuCvS.vcxproj /p:configuration=release /p:platform=x64 /p:CharacterSet=Unicode
    • Linux (Ubuntu)
      • $ cd build-linux
      • [SDI] $ cmake . -D SDI=True
      • [MDI] $ cmake . -D SDI=False
      • $ make
    • Mac (+Xcode) I
      • $ cd build-mac
      • [SDI] $ cmake . -G Xcode -D SDI=True
      • [MDI] $ cmake . -G Xcode -D SDI=False
    • Mac (+Xcode) II
    • Mac III
      • $ cd build-mac
      • [SDI] $ cmake . -D SDI=True
      • [MDI] $ cmake . -D SDI=False
      • $ make

[Windows-MDI]

[Windows-SDI]

[Linux-Ubuntu-MDI]

[Mac-MDI]

Sequence processing

  • Image sequences and video files
  • Example
    • Open mp4 file and Run

Source code

  • Call a method (Run) for image processing
// MainDialog.cpp
void CMainDialog::OnTimer(wxTimerEvent& event) {
	// Timer for sequence processing

	...

	if(bLoaded) {
		auto start = std::chrono::steady_clock::now();
		
		cv::Mat Output;
		
		// Project Run;
		m_Project.Run(CurrentImage, Output, m_pVerboseCheck->GetValue());
    		// m_Porject is a CProject class instance for sequence processing
   		// Since you only modify the CProject class, you can easily show and debug the processing and results
    
   		// Display codes
		...
	}

	...
}
  • CProject class
// CProcessing.cpp / h
class CProject
{
	cv::Mat m_PreviousImage;
public:
	CProject();
	void Run(cv::Mat Input, cv::Mat& Output, bool bVerbose);
};

CProject::CProject() {
}

void CProject::Run(cv::Mat Input, cv::Mat& Output, bool bVerbose) {
	cv::Sobel(Input, Output, -1, 1, 1);

	cv::Mat Difference;

	if (!m_PreviousImage.empty()) {

		if (Input.type() == m_PreviousImage.type() &&
			Input.cols == m_PreviousImage.cols &&
			Input.rows == m_PreviousImage.rows) {
			cv::subtract(Input, m_PreviousImage, Difference);

			if (bVerbose) DisplayImage(Difference, 0, Input.rows, false, false);
		}
	}

	m_PreviousImage = Input.clone();
}
  • Showing string information (DlgPrintf function) - lower output window
DlgPrintf("%05d: %s, %10.5lfms", m_nProcessingNum, fileName, processingTime);

References

About

KhuCv: Open development source for computer vision (Kyung Hee University, Data Analysis & Vision Intelligence)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published