open cv-从图像中移除彩色区域

roejwanj  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(186)

我正在尝试使用opencv和java从图像中删除特定的颜色(在本例中为灰色)。我希望图像的所有其他部分都应该出现在输出图像中
这是我试过的。

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
     Mat original = Imgcodecs.imread("C:\\ABC\\App2.jpg");

     Mat dst = new Mat();
     Core.inRange(original, new Scalar( 88, 88, 88), new Scalar( 88, 88, 88), dst);
     Imgcodecs.imwrite("C:\\ABC\\mask4.jpg", dst);

原始图像:https://freeimage.host/i/dkdqxe 原始输出:https://freeimage.host/i/dkdukb
它所做的是,图像的灰色部分显示为白色,其余部分全部为黑色。但我只想删除(或使透明)的灰色部分从原始图像,而不影响图像的其他部分。任何帮助公关输入是非常感谢的。提前谢谢。

66bbxpm5

66bbxpm51#

在python中,通过给定点的范围来定义区域:

import cv2
img=cv2.imread('test.jpg', -1)
crop_img = img[y:y+h, x:x+w]
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)

希望能帮助您分别在java中理解。
更新#2

import cv2
img = cv2.imread('lena.jpg', -1)
roi = cv2.selectROI(img, False)
crop_img = img[roi[1]:(roi[1]+roi[3]), roi[0]:(roi[0]+roi[2])]
cv2.imwrite('cropped',crop_img)

相关问题