for (int i = 0; i < image.rows; i++) {
for (int j = 0; j < image.cols; j++) {
if (image.at<Vec3b>(i, j)[0] != 0 && image.at<Vec3b>(i, j)[1] != 0 && image.at<Vec3b>(i, j)[2] != 0) { /*Check if all the RGB pixels are not 0 (not black)*/
/*TODO*/
/*MOVE THIS PIXEL TO A NEW ARRAY*/
}
}
不能裁剪出图像的角。但你可以把它们变成透明的。您可以将图像转换为灰度,将这些区域的阈值设置为黑色,将其余区域设置为白色,并将其用作遮罩。将遮罩放入alpha通道,角点将是透明的。下面是一个使用Python/OpenCV的示例。在
输入:
图像本质上是一个像素数组,所以当你说裁剪图像时,我将其转换为从数组中删除元素。因此,为了从数组中删除某些元素,它的大小必须改变,因为我们都知道在C++中声明后数组大小不能改变。但是,您可以过滤所需的像素并将其复制到新数组中。我没有一个工作代码,但希望下面的代码能给你一个推动
}
相关问题 更多 >
编程相关推荐