英文:
Open CV - Removing a colored region from an image
问题
我正在尝试使用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
它的作用是,图像中灰色部分显示为白色,而图像的其余部分都是黑色。但我只想从原始图像中移除(或使其透明)灰色部分,而不影响图像的其他部分。非常感谢您提前的任何帮助或输入。
英文:
I am trying to remove a particular color( Grey in this case ) from an image using OpenCV & Java.
I want all the other parts of the image should be present in the output image
Here is what I have tried.
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);
Original Image: https://freeimage.host/i/dkdqXe
Original Output: https://freeimage.host/i/dkdukB
What it does is, the grey colored portion of the image is shown in white and the rest of the image is all black. But I just want to remove ( or make transparent ) the grey colored portion from the original image without affecting the other parts of the image. Any help pr input is much appreciated. Thanks in advance.
答案1
得分: 0
在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)
英文:
in Python you define the area by giving the range of the points:
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)
Hope that can help you figuring in out in Java respectivly.
UPDATE #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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论