我正在寻找一个能够删除PDF中颜色的linux命令行实用程序/脚本.该实用程序的输出应该是相同的PDF,但是以灰度显示.
有谁知道如何做到这一点?
谢谢
我想渲染一个灰色的颜色纹理.使用着色器在ES 2.0中执行它是件小事,但是可以在ES 1.x中执行吗?
感谢@datenwolf,我这样做:
GLfloat weights_vector[4] = {0.2126, 0.7152, 0.0722, 1.0};
GLfloat additions_vector[4] = {0.5, 0.5, 0.5, 0.0};
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
/* First part */
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT);
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, weights_vector);
/* Second part */
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_ADD);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT);
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, additions_vector);
Run Code Online (Sandbox Code Playgroud)
第一部分渲染得很好,如果我自己留下它,但如果我添加第二部分,它使用"黑色"作为前一种颜色,所以我只得到灰色像素.我在这做错了吗?
如果我尝试使用GL_TEXTURE0而不是GL_PREVIOUS我确实得到相同的结果GL_TEXTURE.但是,如果我使用的话,我GL_TEXTURE1甚至不是灰色像素,而是黑色.我迷路了......
第二部分现在正在运作.应该只是使用@datenwolf建议的以前纹理的名称!
但是,输出仍然不正确,因为它是倒置的.我通过添加:
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_ONE_MINUS_SRC_COLOR);
Run Code Online (Sandbox Code Playgroud)
现在,它太黑了.我无法做对.尝试过但没有用:
我开始怀疑它是不可能的,因为偏见和乘法DOT3_RGB.在组合器中执行此操作的正确方法是: …
我能够使用以下Java方法将图像转换为灰度图像.
public void ConvertToGrayScale(BufferedImage bufImage, int ImgWidth, int ImgHeight) {
for (int w = 0; w < ImgWidth; w++) {
for (int h = 0; h < ImgHeight; h++) {
Color color = new Color(bufImage.getRGB(w, h));
int ColAvgVal = ((color.getRed() + color.getGreen() + color.getBlue()) / 3);
Color avg = new Color(ColAvgVal, ColAvgVal, ColAvgVal);
bufImage.setRGB(w, h, avg.getRGB());
System.out.println(avg.getRGB());
}
}
}
Run Code Online (Sandbox Code Playgroud)
"的System.out.println(avg.getRGB());" 用于查看像素强度,但所有灰度级都是负值,而不是0-255之间.
我做错了吗?如何将图像转换为像素强度在0-255之间的灰度图像.
谢谢
我知道也有类似的问题,但是那些问题没有回答我的问题。如标题所示,我使用的是JavaFX Image类,而不是bufferedImage。
我以前的答案,这个其他的问题,但得到的图像是空的。
这是我的代码:
public static Image toGrayScale(Image sourceImage) {
PixelReader pixelReader = sourceImage.getPixelReader();
int width = (int) sourceImage.getWidth();
int height = (int) sourceImage.getHeight();
WritableImage grayImage = new WritableImage(width, height);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int pixel = pixelReader.getArgb(x, y);
int red = ((pixel >> 16) & 0xff);
int green = ((pixel >> 8) & 0xff);
int blue = (pixel & 0xff); …Run Code Online (Sandbox Code Playgroud) 我有这个小提琴http://jsfiddle.net/jdsans/38GFS/我试图锻炼,但我无法将回调函数的返回发送到主函数.回调函数包含我想要的结束返回值,但它不返回.
当我使用document.write()函数打印返回值时,我得到了我想要的确切值,但正如我之前所说,它不会被返回.
任何人都可以用这个小提琴来向我展示一个有效的例子.我在小提琴中添加了更多细节作为评论,以便您在理解我时没有任何问题.
我完成了获得灰度值,但我不知道如何使用函数将灰度转换为二进制图像.请帮帮我,这里是我的功能代码:
public Bitmap toBinary(Bitmap bmpOriginal) {
int width, height, threshold;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
threshold = 127;
final Bitmap bmpBinary = null;
for(int x = 0; x < width; ++x) {
for(int y = 0; y < height; ++y) {
// get one pixel color
int pixel = bmpOriginal.getPixel(x, y);
//get grayscale value
int gray = (int)(pixel & 0xFF);
//get binary value
if(gray < threshold){
bmpBinary.setPixel(x, y, 0);
} else{
bmpBinary.setPixel(x, y, 255);
}
}
}
return bmpBinary; …Run Code Online (Sandbox Code Playgroud) 我必须编写一个程序,将强度图像转换为黑白图像.我只是想我可以从原始矩阵中获取一个值,如果它高于平均值,则使另一个数组中的相应单元格等于1,否则等于零:
for x=1:X
for y=1:Y
if I(x,y)>mean(I(:))
bw(x,y)=1;
elseif I(x,y)<mean(I(:))
bw(x,y)=0;
end
end
end
image(bw)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到的图像都是黑色的.为什么?
我在uint8,顺便说一下.2-Lena.tiff图像
我一直试图以灰度显示来自笔记本电脑网络摄像头的相机提要,并且已经使用以下代码完成了该操作:
import cv2
import numpy as np
clicked = False
def onMouse(event, x, y, flags, param):
global clicked
if event == cv2.cv.CV_EVENT_LBUTTONUP:
clicked = True
cv2.namedWindow('image capture', cv2.WINDOW_NORMAL)
cv2.setMouseCallback('image capture', onMouse)
#initialize the camera object with VideoCapture
camera = cv2.VideoCapture(0)
sucess, frame = camera.read()
cv2.imwrite('snapshot.png', frame)
gray = cv2.imread('snapshot.png', cv2.IMREAD_GRAYSCALE)
while sucess and cv2.waitKey(1) == -1 and not clicked:
cv2.imwrite('snapshot.png', frame)
gray = cv2.imread('snapshot.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow('image capture', gray)
sucess, frame = camera.read()
cv2.imwrite('snapshot.png', frame)
print 'photo taken press any key …Run Code Online (Sandbox Code Playgroud)