gpt4 book ai didi

c - OpenCV 中的反向填充图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:16:07 25 4
gpt4 key购买 nike

我是 OpenCv 的新手,一直在一个小项目中使用它。

除了图像中的矩形区域外,我打算在整个区域填充单 channel 图像。

我有两个问题。

1) 用黑色填充单 channel 图像。 (cvSet 不能在单 channel 上工作)

2) 对除图像内部矩形区域外的整个图像进行填充。

有什么解决办法吗?

最佳答案

这是一个程序,展示了如何用黑色填充单个 channel 以及如何使用蒙版将图像设置为黑色。

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

int main(int argc, const char * argv[]) {

cv::Mat image;
image = cv::imread("../../lena.jpg", CV_LOAD_IMAGE_GRAYSCALE);

if (!image.data) {
std::cout << "Image file not found\n";
return 1;
}

cv::namedWindow("original");
cv::imshow("original", image);

//Define the ROI rectangle
cv::Rect ROIrect(100, 100, 200, 200);

//Create a deep copy of the image
cv::Mat fill(image.clone());
//Specify the ROI
cv::Mat fillROI = fill(ROIrect);
//Fill the ROI with black
fillROI = cv::Scalar(0);

cv::namedWindow("fill");
cv::imshow("fill", fill);
cvMoveWindow("fill", 500, 40);

//create a deep copy of the image
cv::Mat inverseFill(image.clone());
//create a single-channel mask the same size as the image filled with 1
cv::Mat inverseMask(inverseFill.size(), CV_8UC1, cv::Scalar(1));
//Specify the ROI in the mask
cv::Mat inverseMaskROI = inverseMask(ROIrect);
//Fill the mask's ROI with 0
inverseMaskROI = cv::Scalar(0);
//Set the image to 0 in places where the mask is 1
inverseFill.setTo(cv::Scalar(0), inverseMask);

cv::namedWindow("inverseFill");
cv::imshow("inverseFill", inverseFill);
cvMoveWindow("inverseFill", 1000, 40);
// wait for key
cv::waitKey(0);

return 0;
}

关于c - OpenCV 中的反向填充图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com