Search This Blog

Thursday, February 23, 2017

Opencv-3.2.0 on Windows 10 - 64 bit Using Visual Studio 2015

Windows အတွက် pre-built လုပ်ပြီး ဖြစ်သော လက်ရှိ နောက်ဆုံးထွက် OpenCV အခြေကျ ဗာရှင်း ကိုသုံးမည်။ ၄င်းအား
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
တွင် ယူနိုင်သည်။ ရရှိ လာသော opencv-3.2.0-vc14.exe အား ဤ နမူနာ အတွက် C:\opencv အောက်တွင် opencv320 အနေနှင့် extract လုပ်သည်။ IDE အတွက် Visual Studio 2015 ကို https://www.visualstudio.com/downloads/ မှ ရယူ ၍ install လုပ်မည်။ အောက်ပါ အဆင့် များကို Windows 10 64 bit တွင် Visual Studio 2015 နှင့် OpenCV-3.2.0 အား သုံး၍ စမ်းကြည့် ထားသည်။ အခြား ဗားရှင်းများ အတွက်လည်း ဆင်တူ ယိုးမှား နည်းလမ်း များသာ ဖြစ်သည်။

64 bit windows နှင့် Visual Studio 2015 အတွက် enviroment variable တစ်ခု အနေနှင့် OPENCV_DIR ကို သတ်မှတ် မည်။ ထို့အတွက် Command window ကို administrator အနေနှင့် run ရန် start menu ကို right click နှိပ်၍ command prompt (admin) ကို ရွေးပြီး လျင် အောက်ပါ အတိုင်း ရိုက်ထည့် နိုင်သည်။

setx -m OPENCV_DIR C:\opencv\opencv320\build\x64\vc14


DLL များ သုံးသည့် အခါ bin folder ရှိသည့် နေရာကို system path တွင် ထည့်ရန် အတွက် https://www.rapidee.com/en/download အစ ရှိသည့် utility တို့ကို သုံး၍ သော်လည်းကောင်း၊ This PC(My Computer) > Properties > Advanced System Settings > Advanced Tab > Environment variables > Edit System Variables တွင် Path ကို edit လုပ်ပြီး သော်လည်းကောင်း တနည်းနည်း သုံး၍ %OPENCV_DIR%\bin ကို system path အနေနှင့် ထည့်နိုင်သည်။


Figure. Environment variable အသစ်ထပ်ထည့်ခြင်း။


ထိုသို့ install လုပ်ခြင်းများ ပြီးစီး ပါက OpenCV ကို အသုံးပြု၍ နမူနာ တစ်ခု စမ်းသပ်ကြည့် မည်။ Visual Studio 2015 ကို ဖွင့်၍ project အသစ် တစ်ခု ဖန်တီး မည်။ Installed > Visual C++ > General > Empty Project ကိုရွေးမည်။


Figure. Visual Studio 2015 တွင် project အသစ် တစ်ခု ဖန်တီးခြင်း။


ထို့နောက် ညာဖက် Solution Explorer အတွင်းရှိ Source Files ကို ညာဖက် ကလစ် နှိပ်ကာ Add > New Item... မှတဆင့် ပေါ်လာသော pop-up window တွင် Installed > Visual C++ > C++ File (.cpp) ကို ရွေးကာ main.cpp အမည်နှင့် ဖိုင် အလွတ် တခုကို ထည့်မည်။ အပေါ် Tool bar ရှိ Solution Platforms တွင် x86 အစား x64 သို့ ပြောင်းလိုက် မည်။


Figure. Platform ကို x64 အားရွေးခြင်း။


OpenCV နှင့် application များ ရေးရန် လိုအပ်သည့် အလုပ် နှစ်ခုရှိသည်။ OpenCV library များမှာ မည့်သည့် ပုံစံ ဖြစ်သည်ကို compiler အား ပြောရန်နှင့် OpenCV function များ၊ data structure များအား မည့်သည့် နေရာတွင် ယူရ မည်ကို linker အား ပြောရန် ဖြစ်သည်။ ထို့အတွက် အပေါ် menu bar ရှိ View > Other Windows > Property Manager ကိုသွား၍ ဖွင့်မည်။


Figure. Property Manager ကိုဖွင့်ခြင်း။


ပြီးနောက် ညာဖက် Property Manager တွင်လက်ရှိလုပ်မည့် configuration ဖြစ်သော Debug|x64 တွင် ညာဖက် ကလစ်နှိပ်၍ Add New Project Property Sheet... ကိုရွေးကာ 'OpenCV320' အမည်ရှိ property sheet တစ်ခု ဖန်တီးမည်။ Property sheet ကို တစ်ကြိမ် ဖန်တီး ပြီးပါက နောက် Project များတွင် Add New အစား Add Existing Property Sheet ကို ရွေးကာ ပြန်လည် အသုံးပြု နိုင်သည်။


Figure. Property Sheet ထည့်ခြင်း။


ထို့နောက် Property Manager အတွင်းရှိ OpenCV320 အမည် ပေါ်တွင် ညာဖက်ကလစ်နှိပ်ကာ Properties ကို ရွေးမည်။ ပေါ်လာသည့် Property Pages တွင် C/C++ > General > Additional Include Directories ၌

$(OPENCV_DIR)\..\..\include


ဟုဖြည့်ပြီး Apply ကို နှိပ်မည်။


Figure. Include directory အားသတ်မှတ်ခြင်း။


တဖန် Linker အောက်ရှိ General > Additional Library Directories ၌

$(OPENCV_DIR)\lib


ဟု ညွှန်ပြီးသည့် အပြင် မည့်သည့် library ဟု သတ်မှတ်ရန် Linker အောက် Input > Additional Dependencies တွင် သုံးမည့် library modules များ၏ အမည်ကို ဖြည့်ရမည်။


Figure. Library directory အား သတ်မှတ်ခြင်း။


ဤနမူနာတွင် သုံးသည့် OpenCV 3.2.0 အတွက် C:/opencv/opencv320/build/x64/vc14/lib တွင် opencv_world320.lib နှင့် opencv_world320d.lib ဟူ၍ library module နှစ်ခု တွေ့နိုင်သည်။ Debug mode အတွက် d နှင့် အဆုံးသတ် သည့် module သုံးနိုင်ပြီး၊ Release mode အတွက် ကျန်တစ်ခု ကို သုံးရမည်။ Module နာမည်ရှိ နံပါတ် 320 မှာ opencv version 3.2.0 အတွက် ဖြစ်ပြီး၊ သုံးသည့် version ပေါ် မူတည်၍ ပြောင်းမည်။ ယခု နမူနာ အတွက် အောက်ပါ library အမည်

opencv_world320d.lib


ကို ထည့်မည်။


Figure. Library အမည်အား သတ်မှတ်ခြင်း။


OpenCV တွင်သုံးသည့် fopen သည် Visual Studio 2015 ၌ deprecation ဖြစ်သွား သည်ကို disable လုပ်ရန် C/C++ > Preprocessor > Preprocessor Definitions တွင်

_CRT_SECURE_NO_DEPRECATE


ဟု ဖြည့်မည်။


Figure. Deprecation ကို disable လုပ်ခြင်း။


OpenCV စမ်းကြည့်ရန် နမူနာကို အောက်ပါ အတိုင်း ရေးနိုင်သည်။

#include < stdio.h >
#include < opencv2/opencv.hpp >
using namespace cv;
int main(int argc, char** argv)
{
 Mat image;
 image = imread("C:/opencv/thiri.jpg",0);
 if (!image.data) {
  printf("No image data \n");
  return -1;
 }
 namedWindow("Display Image", WINDOW_AUTOSIZE);
 imshow("Display Image", image);
 
 //Create a circular mask
 int h = image.rows;
 int w = image.cols;
 Mat mask(h, w, CV_8UC1, Scalar(0, 0, 0));
 circle(mask, Point(w / 2, h / 2), h / 3, 255, -1);
 
 //Perform bitwise 'AND' to mask out
 Mat im2;
 bitwise_and(image, mask, im2);
 
 //Manipulate pixels
 for (int i=0; i < h; i++)
  for (int j=0; j < w; j++)
   if (mask.at(i, j) == 0)
    im2.at(i, j) = 128;
 namedWindow("Masked Image", WINDOW_AUTOSIZE);
 imshow("Masked Image", im2);
 
 waitKey(0);
 return 0;
}


ဤနေရာ တွင် thiri ၏ ပုံကို C:/opencv/thiri.jpg တွင် ထားထားပြီး၊ သူရှိသည့် နေရာ full path ကို ရေးဖို့ လိုသည်။ Forward slash ကို လက်ခံ သဖြင့် '/' ကို သုံးခြင်းက ရှင်းလင်းသည်။ Backslash ကို သုံးလို ပါက escape character အနေနှင့် '\\' သုံးရန် သတိပြုပါ။ ဤ ပရိုဂရမ်တွင် လမ်းကြောင်း ပေးထားသည့် ပုံကို ဖတ်သည့် အခါ ဒုတိယ argument မှာ 0 ဖြစ်သဖြင့် အဖြူ အမည်း အနေနှင့် ဖတ်သည်။ ထိုနောက် Mat ကို သုံးပြီး mask ဆိုသည့် ပုံ အလွတ် တခုကို အမည်းရောင် (တန်ဖိုး 0 အပြည့်) ဖြင့် ဖန်တီး လိုက်သည်။ ပြီးသည့် အခါ circle ကို သုံး၍ အဖြူရောင် စက်ဝိုင်း တခု mask ၏ အလယ်တွင် ဆွဲလိုက် သည်။ bitwise_and ကို သုံးလိုက် သည့်အခါ mask တွင် 0 ရှိသည့် pixel အားလုံး 0 (အမည်းရောင်) ဖြစ်သွား၍၊ mask တွင် အဖြူရောင် ရှိသည့် နေရာများ (အလယ် စက်ဝိုင်း) တွင်သာ မူရင်းပုံ ကျန်ခဲ့မည်။ ပြီးလျှင် for loop ကို သုံး၍ mask ၏ အမည်းရောင် pixel တစ်ခုခြင်းစီ ၏ တန်ဖိုးကို မီးခိုးရောင် (128) ဖြစ်အောင် ပြောင်းလိုက်သည်။ ရလာသည့် ပုံကို imshow နှင့်ပြသည်။ ရလဒ်ကို အောက်ပါ ပုံတွင် မြင်နိုင်သည်။


Figure. Mask လုပ်၍ရသည့် ရလဒ်။


No comments:

Post a Comment