Nao*_*der 5 java android opencv bitmap image-processing
我使用OpenCV进行图像处理。我想反转此位图(黑到白,白到黑),但我有一些问题。
我这样做后得到了这个位图:
// to grey
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGB2GRAY, 4);
Imgproc.adaptiveThreshold(mat, mat, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 15, 4);
Utils.matToBitmap(mat, bitmapCopy);
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
// to grey
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGB2GRAY, 4);
Imgproc.adaptiveThreshold(mat, mat, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 15, 4);
Utils.matToBitmap(mat, bitmapCopy);
for(int y = 0; y < bitmapCopy.getHeight(); y++){
for(int x = 0; x < bitmapCopy.getWidth(); x++){
int pixel = bitmapCopy.getPixel(x,y);
if (pixel == Color.WHITE){
bitmapCopy.setPixel(x, y, Color.BLACK);
} else {
bitmapCopy.setPixel(x, y, Color.WHITE);
}
}
}
Run Code Online (Sandbox Code Playgroud)
第一张图片中的白线应反转为黑线,但不起作用。我使用Adobe Photoshop检查了文件。当我指向图像的白色区域时,它表明颜色是白色(#FFFFFF)。
我想念什么?有人可以启发我吗?
您可以使用按位不反转图像。一般来说,您希望避免迭代每个像素,因为它非常慢。
原来的
结果
这里有两种反转图像的方法。使用内置cv2.bitwise_not()函数或仅减去 255。它是在 Python 中实现的,但同样的想法也可以在 Java 中使用。
import cv2
image = cv2.imread('1.png')
result = 255 - image
alternative_result = cv2.bitwise_not(image)
cv2.imshow('image', image)
cv2.imshow('result', result)
cv2.imshow('alternative_result', alternative_result)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |