美好的一天!我在使用OpenCV(C ++)裁剪它们之后使用imwrite命令保存下面的图像,但它似乎包括写入时围绕它的黑色部分。我想要的只是保存裁剪的那个。请帮忙。
这是我的代码
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);
}
答案 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);