如何获取图像中特定像素的像素亮度?我正在寻找一个绝对比例来比较不同像素的亮度.谢谢
我在将颜色从RGB转换为LAB空间时遇到问题应该直接使用这里的公式,只是我得到了错误的值
RGB = 56,79,132
X = 8.592
和CIE-L*ab as
这是我的代码; 但我看不出哪里出错了.这可能是因为像我之前的这个家伙一样的浮点数.谢谢.
// user colour
var Red = 56;
var Green = 79;
var Blue = 132;
// user colour converted to XYZ space
XYZ = RGBtoXYZ(Red,Green,Blue)
var colX = XYZ[0];
var colY = XYZ[1];
var colZ = XYZ[2];
// alert(XYZ)
LAB = XYZtoLAB(colX, colY, colZ)
alert(LAB)
function RGBtoXYZ(R, G, B)
{
var_R = parseFloat( R / 255 …Run Code Online (Sandbox Code Playgroud) 我需要在图像上叠加一些文字; 根据整体图像的亮度,此文本应更亮或更暗.如何计算图像的整体(感知)亮度?
找到了一些有趣的单像素: 确定RGB颜色亮度的公式
我有一个Android应用程序,用户用前置摄像头拍摄自己的照片,然后将照片上传到我的服务器.我注意到许多照片来到我的服务器太暗(有时几乎不可能看到用户脸上的清晰).
我想在应用程序端过滤掉这些照片并显示通知(例如"照片太暗.再拍一张照片")给用户.我怎样才能在Android中完成这样的任务?
编辑:
我已经找到了如何计算单个像素的亮度(感谢这个答案:https://stackoverflow.com/a/16313099/2999943):
private boolean isPixelColorBright(int color) {
if (android.R.color.transparent == color)
return true;
boolean rtnValue = false;
int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)};
int brightness = (int) Math.sqrt(rgb[0] * rgb[0] * .299 + rgb[1]
* rgb[1] * .587 + rgb[2] * rgb[2] * .114);
if (brightness >= 200) { // light color
rtnValue = true;
}
return rtnValue;
}
Run Code Online (Sandbox Code Playgroud)
但我仍然不清楚如何确定整个图像亮度"状态".有什么建议?
根据http://www.workwithcolor.com/color-luminance-2233.htm,RED (#FF0000) 的亮度为 54%。浅粉色 (#FF8080) 的亮度为:89%。我们的设计师喜欢它,但它是如何确定的?在这里试试:http : //www.workwithcolor.com/hsl-color-schemer-01.htm
我尝试使用W3C 发布的相对亮度公式,虽然范围是 [0,1],但红色是0.21,白色是1.00。
我在想,也许 workwithcolor 所做的是首先将颜色转换为灰度,然后读取灰度的亮度。我试过了,但它仍然没有给出相同的结果。
到目前为止我已经尝试过:http : //jsfiddle.net/HytZQ/
使用Windows 10(10586)的最新稳定版本,Win32窗口标题的颜色会根据窗口镶边的颜色而变化.
例如,如果窗口颜色较暗,则标题使用白色.反之亦然.
所以,既然我想要那种行为,我必须得到窗口铬的颜色亮度.
通过使用此方法:
public static int GetBrightness(this Color c)
{
return (int)Math.Sqrt(
c.R * c.R * .241 +
c.G * c.G * .691 +
c.B * c.B * .068);
}
Run Code Online (Sandbox Code Playgroud)
而我正在使用其他方法:
public static float GetBrightness2(this Color color)
{
float num = ((float)color.R) / 255f;
float num2 = ((float)color.G) / 255f;
float num3 = ((float)color.B) / 255f;
float num4 = num;
float num5 = num;
if (num2 > num4)
num4 = num2;
if (num3 > …Run Code Online (Sandbox Code Playgroud) MS App Assure 团队向我报告了一个问题,即我的应用程序的通知区域/系统托盘图标在白色高对比度主题(或接近白色,如 Windows 11 的“沙漠”主题)上几乎不可见。
我已经有一个在(正常、非高对比度)Windows 浅色主题打开时使用的深色图标,因此我也想在这些场景中使用它。
唯一的问题是,虽然我可以检测高对比度模式是否打开SystemParametersInfo,但我没有找到任何东西来检测它是白色还是黑色高对比度主题。我将如何继续检测到这一点?
我知道 MSIX 包支持为白色和黑色高对比度主题使用不同的图标,那么它们如何检测它呢?
我正在自学计算机图像处理的基础知识,同时我也在自学Python。
给定x具有3个通道的尺寸为2048x1354 的图像,可以有效地计算像素强度的直方图。
import numpy as np, cv2 as cv
img = cv.imread("image.jpg")
bins = np.zeros(256, np.int32)
for i in range(0, img.shape[0]):
for j in range(0, img.shape[1]):
intensity = 0
for k in range(0, len(img[i][j])):
intensity += img[i][j][k]
bins[intensity/3] += 1
print bins
Run Code Online (Sandbox Code Playgroud)
我的问题是这段代码运行缓慢,大约需要30秒。我如何才能加快速度并变得更Python化?
我正在使用以下方法计算Javascript中的亮度:
luminosity = (5036060 * backgroundColor.red + 9886846 * backgroundColor.green + 1920103 * backgroundColor.blue) >> 24;
Run Code Online (Sandbox Code Playgroud)
对于颜色为白色的情况,即所有3个RGB值都是255,我得到-1的结果.我明确地测试了并且在Javascript中值"4294967295 >> 24"是-1.
为什么?
我正在开发一个关于太阳系的应用程序.我试图关闭发射纹理,光线照射到行星表面.但问题是,默认情况下,发射纹理总是显示发射点,无论光线是否存在.
我的要求简而言之:(我想隐藏发光点,在光线照射到表面的地方) 
override func viewDidLoad() {
super.viewDidLoad()
let scene = SCNScene()
let earth = SCNSphere(radius: 1)
let earthNode = SCNNode()
let earthMaterial = SCNMaterial()
earthMaterial.diffuse.contents = UIImage(named: "earth.jpg")
earthMaterial.emission.contents = UIImage(named: "earthEmission.jpg")
earth.materials = [earthMaterial]
earthNode.geometry = earth
scene.rootNode.addChildNode(earthNode)
let lightNode = SCNNode()
lightNode.light = SCNLight()
lightNode.light?.type = .omni
lightNode.position = SCNVector3(x: 0, y: 10, z: 5)
scene.rootNode.addChildNode(lightNode)
sceneView.scene = scene
}
Run Code Online (Sandbox Code Playgroud)