Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景
Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景方法含义解释bitwise_and“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作1&1=1,1&0=0,0&1=0,0&0=0bitwise_or“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作1|1=1,1|0=0,0|1=0 0|0=0
·
Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景
方法 | 含义 | 解释 |
---|---|---|
bitwise_and | “与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作 | 1 & 1 = 1,1 & 0 = 0,0 & 1 = 0,0 & 0 = 0 |
bitwise_or | “或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作 | 1 | 1 = 1,1 | 0 = 0,0 | 1 = 0,0 | 0 = 0 |
bitwise_xor | “异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作 | 1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0 |
bitwise_not | “非”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作 | 1 = 0, 0 = 1 |
1 读取原图片
2 获取原图片的mask
3 获取原图片需要获取的ROI
4 获取新背景的mask
5 融合 3,5
package com.xu.opencv;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
/**
* @Title: Image.java
* @Description: OpenCV-4.0.0 测试文件
* @Package com.xu.Image
* @author: hyacinth
* @date: 2022年1月19日14点43分
* @version: V-1.0.0
* @Copyright: 2019 hyacinth
*/
public class Image {
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
public static void main(String[] args) {
ROI();
}
public static void ROI() {
Mat src = Imgcodecs.imread("D:\\OneDrive\\桌面\\1.png", Imgcodecs.IMREAD_ANYCOLOR);
// 获取 mask
Mat mask = new Mat();
Core.inRange(src, new Scalar(235, 235, 235), new Scalar(255, 255, 255), mask);// B, G, R
// 获取原图中的ROI
Mat dst = new Mat();
Core.bitwise_not(mask, mask);
Core.bitwise_and(src, src, dst, mask);
// 获取 新背景的 mask
Mat img = new Mat();
Core.bitwise_not(mask, mask);
Mat blue = new Mat(src.size(), src.type(), new Scalar(255, 0, 0));
Core.bitwise_or(dst, blue, img, mask);
// 背景和ROI融合
Mat mat = new Mat();
Core.add(img, dst, mat);
HighGui.imshow("新背景", mat);
HighGui.waitKey();
HighGui.destroyAllWindows();
}
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)