使用opencv c ++删除图像周围的黑色空间

时间:2018-01-09 14:28:10

标签: c++ opencv

美好的一天!我在使用OpenCV(C ++)裁剪它们之后使用imwrite命令保存下面的图像,但它似乎包括写入时围绕它的黑色部分。我想要的只是保存裁剪的那个。请帮忙。

enter image description here

这是我的代码

Mat mask,draft,res;
int nPixels;
char c=0;

while(true && c!='q') {
        imshow("SAMPLE", img);
        if(!roi.isSet())
            roi.set("SAMPLE");
        if (roi.isSet()) {
                roi.createMask(img.size());
                mask = roi.getMask();
                res = mask & img.clone();
                imwrite("masked.png",res);

                imshow("draft", res);


        }

        c = waitKey(1); 

    }

1 个答案:

答案 0 :(得分:0)

以下是如何裁剪图像并保存图像的示例(请参阅api55中的注释)。也许这有助于你。

cv::Mat img = cv::imread("Path/To/Image/image.png", cv::IMREAD_GRAYSCALE);
if(image.empty())
  return -1;

cv::Rect roi(0, 0, 100, 100); // define roi here as x0, y0, width, height
cv::Mat cropedImg(img, roi);

cv::imwrite("Path/To/Save/Location/cropedImage.png", cropedImg);