You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于OpenCV实现实时替换指定颜色的技术问题咨询

OpenCV C++ 实时替换指定颜色实现方案

核心逻辑:你已经生成了红色区域的二值掩码BW,仅需通过掩码对原图对应位置赋值即可完成颜色替换,对应Python参考代码的赋值逻辑,C++ 中使用Mat::setTo方法实现。

修改后完整代码

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/videoio/videoio.hpp>
#include <iostream>

using namespace cv;
using namespace std;
int RoboX = 300;
int RoboY = 10;
Mat VRobo(Mat gbr, int arah);
int main()
{
    VideoCapture kameraku(0);
    Mat image;
    Mat image2;
    Mat hsv;
    Mat BW;
    Mat element;
    namedWindow("Kamera", WINDOW_AUTOSIZE);
    namedWindow("Convert", WINDOW_AUTOSIZE);
    // 新增替换结果窗口
    namedWindow("替换结果", WINDOW_AUTOSIZE);
    while (1) {
        kameraku >> image;
        kameraku >> image2;
        imshow("Kamera", image);
        cvtColor(image2, hsv, CV_BGR2HSV);
        inRange(hsv, Scalar(0, 60, 60), Scalar(5, 255, 255), BW);
        element = getStructuringElement(MORPH_ELLIPSE, Size(5, 5));
        erode(BW, BW, element);
        erode(BW, BW, element);
        erode(BW, BW, element);
        dilate(BW, BW, element);
        dilate(BW, BW, element);
        dilate(BW, BW, element);
        // 新增颜色替换逻辑:将掩码区域替换为蓝色(OpenCV默认BGR格式,蓝色对应(255,0,0))
        image2.setTo(Scalar(255, 0, 0), BW);
        imshow("Convert", BW);
        // 新增替换结果展示
        imshow("替换结果", image2);
        char c = (char)waitKey(25);
        if (c == 27) break;
    }
    kameraku.release();
    destroyAllWindows();
    return 0;
}

关键逻辑说明

  • setTo方法的第二个参数为掩码,仅会修改掩码中数值非0的像素位置,符合精准替换要求
  • OpenCV默认使用BGR色彩顺序存储彩色图像,你可以修改Scalar的三个参数值替换为任意目标颜色,比如替换为绿色就是Scalar(0,255,0),替换为红色就是Scalar(0,0,255)

优化建议

  • 红色的Hue值在HSV环形色彩空间中分为两段,除了0-5区间,170-180区间也属于红色范围,你可以合并两个区间的掩码提升红色检测的完整性:
Mat BW2;
inRange(hsv, Scalar(170, 60, 60), Scalar(180, 255, 255), BW2);
BW = BW + BW2;
  • 重复3次腐蚀+3次膨胀的操作等价于先开运算后闭运算,可以直接用morphologyEx简化代码:
morphologyEx(BW, BW, MORPH_OPEN, element);
morphologyEx(BW, BW, MORPH_CLOSE, element);

内容的提问来源于stack exchange,提问作者Alan Emilio Admaja Lie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:39:02