1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <string> #include <vector>
int main() { cv::Mat srcImage = cv::imread("seven.jpg"); if (!srcImage.data) return -1; cv::imshow("srcImage", srcImage); cv::medianBlur(srcImage, srcImage, 3); cv::Mat hsvImage; cv::cvtColor(srcImage, hsvImage, cv::COLOR_BGR2HSV); cv::imshow("hsvImage", hsvImage);
cv::Mat mask=srcImage.clone(); cv::inRange(hsvImage, cv::Scalar(35, 43, 46), cv::Scalar(77, 255, 255), mask); cv::imshow("inrange", mask);
cv::bitwise_not(mask,mask);
std::vector<cv::Mat> channels; split(srcImage,channels); cv::bitwise_and(channels[0], mask,channels[0]); cv::bitwise_and(channels[1], mask,channels[1]); cv::bitwise_and(channels[2], mask,channels[2]); cv::Mat result; merge(channels,result);
cv::imshow("mask", mask);
cv::imshow("result", result);
cv::waitKey(0); return 0; }
|