所用图像:
代码:
import cv2
import matplotlib.pyplot as plt
import numpy as np
from utilsW.utils import cvShow
img = cv2.imread("D:/images/bird.jpg")
cvShow("img", img)
Gauss = cv2.GaussianBlur(img, (5, 5), 0)
cvShow("Gauss", Gauss)
hsv = cv2.cvtColor(Gauss, cv2.COLOR_BGR2HSV)
cvShow("hsv", hsv)
low = np.array([55, 0, 0])
high = np.array([118, 255, 255])
mask = cv2.inRange(hsv, low, high)
cvShow("mask", mask)
res = cv2.bitwise_and(img, img, mask=mask)
cvShow("res", res)
下面是C++代码
#include <opencv.hpp>
#include <iostream>
#include <algorithm>
#include "utils.hpp"
using namespace std;
using namespace cv;
int main()
{
Mat src_img, hsv_img, gauss_img, mask, dst;
src_img = cv::imread("D:/images/bird.jpg");
cvShow("src_img", src_img);
//3, 灰度化,高斯模糊
cv::GaussianBlur(src_img, gauss_img, Size(5, 5), 0);
cvShow("gauss_img", gauss_img);
cv::cvtColor(gauss_img, hsv_img, cv::COLOR_BGR2HSV);
cvShow("hsv", hsv_img);
Mat low = (Mat_<uchar>(1,3) << 55, 0, 0);
Mat high = (Mat_<uchar>(1, 3) << 118, 255, 255);
cv::inRange(hsv_img, low, high, mask);
cvShow("mask", mask);
cv::bitwise_and(src_img, src_img, dst, mask);
cvShow("dst", dst);
return 0;
}