Creating an application for AOI
To create our new application, we require a few input parameters. When a user executes the application, all of them are optional, excluding the input image to process. The input parameters are as follows:
- Input image to process
- Light image pattern
- Light operation, where a user can choose between difference or divide operations
- If the user sets 0 as a value, the difference operation is applied
- If the user set 1 as a value, the division operation is applied
- Segmentation, where the user can choose between connected components with or without statistics and find contour methods
- If the user sets 1 as the input value, the connected components method for segment is applied
- If the user sets 2 as the input value, the connected components method with the statistics area is applied
- If the user sets 3 as the input value, the find contours method is applied for Segmentation
To enable this user selection, we are going to use the command line parser class with the following keys:
// OpenCV command line parser functions // Keys accepted by command line parser const char* keys = { "{help h usage ? | | print this message}" "{@image || Image to process}" "{@lightPattern || Image light pattern to apply to image input}" "{lightMethod | 1 | Method to remove background light, 0 difference, 1 div }" "{segMethod | 1 | Method to segment: 1 connected Components, 2 connected components with stats, 3 find Contours }" };
We are going to use the command line parser class in the main function by checking the parameters. The CommandLineParser is explained in Chapter 2, An Introduction to the Basics of OpenCV, in the Reading videos and cameras section:
int main(int argc, const char** argv) { CommandLineParser parser(argc, argv, keys); parser.about("Chapter 5. PhotoTool v1.0.0"); //If requires help show if (parser.has("help")) { parser.printMessage(); return 0; } String img_file= parser.get<String>(0); String light_pattern_file= parser.get<String>(1); auto method_light= parser.get<int>("lightMethod"); auto method_seg= parser.get<int>("segMethod"); // Check if params are correctly parsed in his variables if (!parser.check()) { parser.printErrors(); return 0; }
After parsing our command-line user data, we need to check the input image has been loaded correctly. We then load the image and check it has data:
// Load image to process Mat img= imread(img_file, 0); if(img.data==NULL){ cout << "Error loading image "<< img_file << endl; return 0; }
Now, we are ready to create our AOI process of segmentation. We are going to start with the preprocessing task.
- 數據存儲架構與技術
- 數據庫基礎教程(SQL Server平臺)
- SQL Server入門經典
- 計算機信息技術基礎實驗與習題
- Access 2007數據庫應用上機指導與練習
- Ceph源碼分析
- 一個64位操作系統的設計與實現
- SQL優化最佳實踐:構建高效率Oracle數據庫的方法與技巧
- 云數據中心網絡與SDN:技術架構與實現
- IPython Interactive Computing and Visualization Cookbook(Second Edition)
- 視覺大數據智能分析算法實戰
- 大數據時代系列(套裝9冊)
- Spring Boot 2.0 Cookbook(Second Edition)
- 云工作時代:科技進化必將帶來的新工作方式
- Artificial Intelligence for Big Data