为什么从数组转换为图像时会出现位移?

2024-04-14

我正在尝试从 numpy 数组创建 QPixmap 。 numpy 数组图像将是二维的(即没有颜色信息,只有灰度)。

我正在尝试适应这一点answer https://stackoverflow.com/a/9796921/1764089满足我的需要,但我不太明白这一行:

b = (255 << 24 | a[:,:,0] << 16 | a[:,:,1] << 8 | a[:,:,2]).flatten() # pack RGB values

正在进行一些位移和一些按位or'但说实话我不太明白。

所以我的简化示例如下:

x, y = np.meshgrid(np.arange(1920), np.arange(1080), indexing='ij'); z = np.sin(0.03*x)*np.cos(0.005*y)
imgPNFN = z
if imgPNFN.ndim == 2:
    imgPNFN = imgPNFN[:,:,np.newaxis].repeat(3, 2)
imMin = np.min(imgPNFN)
imDelta = np.max(imgPNFN) - np.min(imgPNFN)
im1 = ((imgPNFN-imMin)/imDelta*255).astype(np.uint32)+1 #<-- had to add 1 for some reason otherwise got weird results...
im2 = 255 << 24 | im1[:,:,0] << 16 | im1[:,:,1] << 8 | im1[:,:,2]
im3 = QtGui.QImage(im2, im2.shape[1], im2.shape[0], QtGui.QImage.Format_RGB32)

这似乎有效,但是当我的图像是 lena 时,即:

from scipy.misc import lena
l = sp.misc.lena()
imgPNFN = l
#etc...

它不起作用...我认为这是因为我对位移正在做什么缺乏理解...另外,如果有更好的方法来处理RGB(即我复制东西来假装我有相同的值)如果我能以某种方式避免这种情况那就太好了。

提前致谢!


我假设您想知道为什么位移和or-正在发生。那么,您需要加入A[lpha], R[ed], G[reen], and B[lue]字节组合在一起形成单个整数值。像素数据是整数的二维数组;标量值。它们不是字节元组。

Example

Color: 长春花 http://en.wikipedia.org/wiki/Periwinkle_%28color%29

A: 255 -> 11111111
R: 204 -> 11001100
G: 204 -> 11001100
B: 255 -> 11111111

Formula

Value = A << 24 | R << 16 | G << 8 | B

Bit-Math

  11111111000000000000000000000000
          110011000000000000000000
                  1100110000000000
 +                        11111111
 ---------------------------------
  11111111110011001100110011111111

基数转换

111111111100110011001100111111112 = 429161190310

Finally

基于上面的位操作,颜色 Periwinkle(在 ARGB 中具有 100% 不透明度)的像素值为 4,291,611,903。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么从数组转换为图像时会出现位移? 的相关文章

随机推荐

  • Dtrace 中的局部变量

    如何使用 dtrace 访问函数的本地变量 例如 在下面的代码片段中 我想使用 dtrace 了解变量 x 的值 void foo int a int x some fun a 对于内核代码来说 跟踪局部变量是不可能的 因为没有检测任意内核
  • Android实现ScrollView setOnScrollChangeListener

    在我的显示和隐藏一些小部件的应用程序中 我在该网站上找到了以下代码 但我无法在我的片段上实现它 例如 public abstract class HidingScrollListener extends RecyclerView OnScr
  • 如何从命令行设置MySQL会话wait_timeout?

    正如您从下面的输出中看到的 我正在使用 MySQL shell 来更改会话的wait timeout可变为 30 秒 有用 但是 是否可以从命令行设置此变量 mysql u root h 127 0 0 1 p Enter password
  • .Net TimeZoneInfo ID - 是否特定于 Windows 语言?

    我正在使用 net TimeZoneInfo FindSystemTimeZoneById 方法 据我所知该方法查询注册表 存储在注册表 HKEY LOCAL MACHINE Software Microsoft Windows NT Cu
  • Python 调试器的列表理解范围错误

    在调试我的代码时 我想使用列表理解 但是 当我在函数内部时 我似乎无法从调试器评估列表理解 我正在使用Python 3 4 脚本内容 cat test py usr bin python def foo x 1 2 3 3 4 print
  • 模拟 ZPL 打印机

    为了在我的 Mac 上模拟 ZPL 打印机 我在互联网上搜索了几天 最后 我在这里发布了一个解决方案 以便其他用户可以发现它有帮助 我想在这里发布我的解决方案模拟 Zebra 打印机 https stackoverflow com ques
  • 根据 JQGRID 中的条件编辑行

    在 JQGRID 中使用表单编辑 我用不同的颜色显示行 红色 无法编辑行 黑色 可以编辑行 1 Option 当用户单击编辑按钮并且所选行为红色时 应显示消息记录 无法编辑 2 选项 如果用户选择了黑色标记的可编辑行 用户可以编辑该行 但是
  • 当我在程序启动后复制 DLL 时,在运行时加载程序集失败

    在运行时我加载一个程序集 Assembly assembly Assembly LoadFrom c MyFolder MyAssembly dll 如果程序集位于该文件夹中 则此方法有效 如果程序集不在文件夹中 我会得到一个异常 当然告诉
  • 在 Java 中如何检查字节数组是否包含 Unicode 字符串?

    给定一个 UTF 8 编码字符串或任意二进制数据的字节数组 可以使用哪些方法in Java来确定它是哪一个 该数组可以由类似于以下的代码生成 byte utf8 Hello World getBytes UTF 8 或者 它可能是由类似于以
  • Ansible:全局模板文件夹?

    谷歌搜索找不到任何东西 有group vars 全部 对于变量 有类似的模板吗 我想在多个角色中使用一些模板 您可以将全局模板放入templatesAnsible 布局顶层目录 与group vars 顺便说一句 全局文件也是如此 file
  • 数组指针的常量正确性?

    有人争论说 在现代 C 语言中 我们应该始终通过数组指针将数组传递给函数 因为数组指针具有强类型 例子 void func size t n int arr n int array 3 func 3 array 这听起来可能是防止各种类型相
  • dask 可以用于在核心之外进行分组和重新编码吗?

    我有 8GB csv 文件和 8GB RAM 每个文件每行有两个字符串 格式如下 a c c a f g a c c a b f c a 对于较小的文件 我删除重复项 计算前两列中每行的副本数 然后将字符串重新编码为整数如下 https s
  • 使用 VBA 选择“查找”的第二个结果

    我正在努力做到这一点 以便我可以找到 lights 的第二个结果 以防该术语出现各种情况 下面的代码查找所考虑范围内的第一个匹配项 Dim ws As Worksheet Dim rng1 As Range Dim y As Range C
  • 如何使用javascript根据用户需求触发媒体查询

    我有一个响应式网页 针对不同的屏幕尺寸具有不同的设计 我正在使用 mediaquery 来更改我的设计 我想让用户能够更改更小或更大屏幕尺寸的设计 即使屏幕尺寸没有改变 是否可以在不改变屏幕尺寸的情况下用js触发 mediaquery 看一
  • Maven archetype + Velocity:如何显示日期

    我有一个 Maven 原型项目 当我使用这个原型时 我希望一些文件报告实际日期 我尝试使用 date 但 Velocity 无法识别它 我发现了一个叫做 DateTools 的东西 但我不知道如何使用它 这是我第一次使用 Velocity
  • pip 在 Docker 中被杀死

    我正在构建一个基于 Docker 容器python 3 7 slim stretch 同样的问题也发生在python 3 7 slim stretch 并且它正在变得Killed on pip install no cache dir ve
  • PhoneGap css 媒体查询方面不起作用

    我开发了一个以 iPhone 作为设计目标 即 640x960 gt 2 3 的应用程序 并且我使用布局中每个分区的百分比来实现此目的 以便 ui 相对于设备尺寸进行扩展 现在 这在 iPad 上运行良好 但我在使用 9 16 宽高比设备时
  • ImportError: libf77blas.so.3: 无法打开共享对象文件: 没有这样的文件或目录 Raspberry Pi3

    我有一个 Raspberry Pi3 我的目标是作为专用服务器运行几个 python3 脚本 到目前为止 我已经使用 pip3 安装了以下软件包 numpy 熊猫 scipy python Levenshtein fuzzywuzzy 还有
  • 将 Angular 从 12 升级到 13 添加了不能在模块外部使用 import.meta

    我将 Angular 项目从 12 升级到 13 但出现错误 未捕获的语法错误 无法在模块外部使用 import meta 我想在我的项目中同时使用 require 和 import 我尝试使用 type module 但在 webpack
  • 为什么从数组转换为图像时会出现位移?

    我正在尝试从 numpy 数组创建 QPixmap numpy 数组图像将是二维的 即没有颜色信息 只有灰度 我正在尝试适应这一点answer https stackoverflow com a 9796921 1764089满足我的需要