OpenCV對影象進行mask操作
阿新 • • 發佈:2019-01-08
這裡的mask操作指的是,對一幅影象image,有一個binary的mask影象,image_masked = image & mask
可以採用 Mat的copyTo成員函式,利用mask引數實現。
#include <opencv2/core/core.hpp> #include "opencv2/imgproc/imgproc.hpp" #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, char** argv ) { if( argc != 3) { cout << argv[0] << " <image> <thresh_val>" << endl; return -1; } Mat image; image = imread(argv[1], IMREAD_COLOR); // Read the file if(! image.data ) // Check for invalid input { cout << "Could not open or find the image" << std::endl ; return -1; } // convert to gray Mat img_gray; cvtColor(image, img_gray, CV_BGR2GRAY); // threshold to get mask int threshold_value = atoi(argv[2]); int max_BINARY_value = 256; Mat mask; threshold(img_gray, mask, threshold_value, max_BINARY_value, THRESH_BINARY); // mask image Mat img_masked; image.copyTo(img_masked, mask); imshow( "image", image ); imshow( "mask", mask ); imshow( "img_masked", img_masked ); waitKey(0); // Wait for a keystroke in the window return 0; }