我有一个系统需要在屏幕上移动图像.我目前正在使用png并将其放置在所需的屏幕坐标处.
由于屏幕分辨率和所需帧速率的组合,一些帧是相同的,因为图像尚未移动整个像素.不幸的是,屏幕的分辨率是不可协商的.
我对子像素渲染如何平滑边缘有一个大致的了解,但我一直无法找到资源(如果存在)我如何使用着色来将图像转换少于一个像素.
理想情况下,这可以用于任何图像,但如果它只能用简单的形状像圆形或环形,那也是可以接受的.
我已经开始在JavaFX中开发一个应用程序而且我遇到了一个问题,我发现很少有用的信息:Linux中字符之间的间距非常不均匀.我不是在谈论不同角色的宽度,而是在谈论角色之间的空间.
它在普通文本中可见,但以下示例比普通文本更好地说明了效果.看看第一行.前两个字符之间的空间小于第二个和第三个字符之间的空格.这也发生在第六和第七个角色之间以及其他几个角色:
Swing没有这个问题,JavaFX在Windows中没有这个问题,或者在该操作系统上几乎看不到.它似乎也不是Mac上的主要问题.为了比较,这里是Mac Retina MacBook Pro的一个示例输出,2014年中,运行OS X 10.12.6和Java 9.0.4:
有谁知道这是否是JavaFX字体渲染引擎中的错误?如果是这样,有解决方法吗?
我真的开始怀疑我是否应该更改框架,因为在我看来这样糟糕的字体渲染是不可接受的.
关于这个问题还有另外一个问题但尚未得到解答: 为什么JavaFX在使用Text组件时在字母之间添加额外的间距以及如何修复它?
我已经能够在运行Manjaro的两台不同Linux机器上以及运行Debian的虚拟机中使用以下代码重现此问题:
package de.localtoast.fonttest;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class FontTest extends Application {
@Override
public void start(Stage primaryStage) {
VBox root = new VBox();
Label label1 = new Label("0000000000000000000000");
Label label2 = new Label("OOOOOOOOOOOOOOOOOOOOOO");
Label label3 = new Label("oooooooooooooooooooooo");
root.getChildren().add(label1);
root.getChildren().add(label2);
root.getChildren().add(label3);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Font Test");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args); …Run Code Online (Sandbox Code Playgroud) 我正在使用C++和OpenCV开发一个简单的"激光线"扫描仪.到目前为止,我能够以1像素的精度检测激光线的中心,因此我有一个可能的"子像素"功能/算法的起点.(激光线宽约15-20像素)
现在我有兴趣将其提高到亚像素精度.我知道OpenCV有一些亚像素检测功能,但据我所知这些仅用于检测角落.
如果有人有任何建议,我想听听他们的意见.
一些信息;
系统:QT框架,C++,OpenCV库
相机; 单色(无色),配红色滤镜
图像分辨率; 2560 x 1920
注意:仅分析1个图像用于激光线.
我正在寻找如何通过相移实现亚像素精度的解释。
我的问题是:
如果我有一个具有离散列数的投影仪和一个列数多于投影仪的相机,那么我怎样才能找到每个相机像素的精确深度值?是否假设投影像素值正在影响它的邻居?
我试图自己寻找答案,但我发现的东西很快就跨越了这个派对。
编辑:
也许我的问题更清楚这张图片。在观察到的图像(相机像素)中,多个像素将始终包含相同的强度,因此会产生相同的对应关系(这可能是错误的)。如果我们只拟合每个像素的正弦曲线,我们就没有任何额外的信息——是吗?该图像采用绝对清晰的投影。

我知道它是一个子像素计算的东西,我阅读了另外两个关于它的 SO(1 , 2),但是,我想知道是否有一个优雅的解决方案专门针对这种情况而不改变规范(因为我知道我是否添加了额外的填充在父容器周围会避免它)。 https://codepen.io/adamchenwei/pen/GxKZpd 如果框具有 1 像素宽度的边框,并且悬停效果的背景颜色会在用户放大 50% 时以某种方式覆盖边框本身 *注意:我确实意识到我正在处理的实际组件,当我放大 75% 左右时它会消失,所以请在将光标悬停在每个项目上时尝试不同的百分比,以查看右侧和底部的边框何时在特定缩放级别消失,并非所有缩放级别都会观察到它!
工作站:
我正在使用最新的 Chrome 浏览器在 15.4 英寸的 Macbook pro 上工作。
CSS
.container {
border-width: 1px;
border-color: lightgray;
border-style: solid;
}
.aaa {
&:hover {
background-color: beige;
}
}
Run Code Online (Sandbox Code Playgroud)
HTML
<div class='container'>
<div class='aaa'>abc</div>
<div class='aaa'>abc</div>
<div class='aaa'>abc</div>
</div>
Run Code Online (Sandbox Code Playgroud)