小编san*_*iso的帖子

如何在C中检查内存地址是否为32位对齐

我的问题有两个部分.

首先,作为这个地址空间的新手,我想知道地址的内存对齐是什么意思.我用Google搜索了一下,但也想在这里提出这个问题,因为我发现这里的答案非常有用.

我的问题的第二部分与对齐和编程有关:如何找到一个地址是否是4字节对齐?在某处我读到:

  if(address & 0x3) // for 32 bit register 
Run Code Online (Sandbox Code Playgroud)

但我真的不知道这是如何检查4字节对齐的.任何人都可以详细解释一下吗?

编辑:如果有人可以在这个主题上绘制图片,那就太棒了.

谢谢

c memory memory-management linux-kernel

14
推荐指数
1
解决办法
3万
查看次数

使用solvePnPRansac函数时出错

我正在使用Python 2.7和opencv 3.0.0.我正在尝试对直播视频进行姿势估计.所以我使用opencv给出的calibrate.py.它运作良好.在这个程序中,我在末尾添加了处理信息以构成轴.我用过这个:http://docs.opencv.org/master/d7/d53/tutorial_py_pose.html#gsc.tab=0

在使用solvePnPRansac函数的行上,我写了这个:在行的开头_, rvecs, tvecs, inliers = cv2.solvePnPRansac(obj_points[0], corners2, camera_matrix, dist_coefs)添加_,.

我出现了这个错误!

error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\core\src\matrix.cpp:2294: error: (-215) d == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0) in function cv::_OutputArray::create
Run Code Online (Sandbox Code Playgroud)

我根本不明白!

有人能帮我吗 ?

以下是我处理视频的代码:

cap = cv2.VideoCapture(0)

while(1):


    # Take each frame
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

    # Find the chess board corners
    ret, corners = cv2.findChessboardCorners(gray, (6,5),None)

    if ret:

        term = ( cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_COUNT, …
Run Code Online (Sandbox Code Playgroud)

python estimation opencv

5
推荐指数
1
解决办法
1575
查看次数

获取 HID 设备的功能报告描述符的本机方法?

我们有一些与内部研发工具通信的HID 设备(触摸数字化仪)。该工具解析来自设备的原始功能报告,以绘制触摸报告以及原始功能报告中存在但被 Windows 7 的 HID 驱动程序过滤掉的一些附加数据(例如,消息中不存在压力数据WM_TOUCH)。

然而,我们已经开始使用一些可能具有不同固件变体的设备,因此它们不共享相同的字段顺序或字节长度,我需要修改我们的研发工具,以便它能够透明地适应所有设备。

这些设备来自同一制造商(我们自己)并共享相同的设备信息,因此不能使用这些字段来区分不同的固件。我想要做的是获取设备发送的HID 功能报告描述符,并根据此信息动态更新我们的功能报告解析方法。

但是,在浏览 Windows API 时,我没有找到正确的调用方法来获取此描述符。到目前为止我发现的是MSDN 上的原始输入页面,但我不知道下一步该怎么做。我可以在RID_DEVICE_HID结构中找到所需的信息吗?或者我需要调用一个完全不同的 API 吗?

在此先感谢您的帮助!

windows usb hid

4
推荐指数
1
解决办法
4614
查看次数

Metal Compute管道不适用于MacOS,但适用于iOS

我正在尝试用Metal做一些GPGPU计算.我有一个基本的Metal管道:

  • 创建所需的MTLComputePipelineState管道和所有关联的对象(MTLComputeCommandEncoder,命令队列等);
  • 为写作创建目标纹理(使用desc.usage = MTLTextureUsageShaderWrite;);
  • 启动一个基本着色器,用一些值填充这个纹理(在我的实验中,要么将一个颜色分量设置为1,要么根据线程坐标创建一个灰度值渐变);
  • 从GPU读回此纹理的内容.

我在2个设置中测试此代码:

  • 在OSX 10.11上使用2013年初的MacBook Pro;
  • 在带有iPhone 6的iOS 9上.

IOS版本上运行得很好,我得到正是我问着色器做.然而,OSX上,我获得了一个有效的(非零,具有正确大小)输出纹理.但是,当获取数据时,我得到的所有数据都是0.

我错过了一个特定于OS X实现的步骤吗?这似乎发生在NVIDIA GT650MIntel HD4000上,或者可能是运行时中的错误?

由于我目前不知道如何进一步调查这个问题,所以在这方面的任何帮助也将不胜感激:-)

编辑 - 我目前的实施

这是我实现的初始(失败)状态.它有点长,但主要是用于创建管道的样板代码:

id<MTLDevice> device = MTLCreateSystemDefaultDevice();
id<MTLLibrary> library = [device newDefaultLibrary];
id<MTLCommandQueue> commandQueue = [device newCommandQueue];

NSError *error = nil;
id<MTLComputePipelineState> pipeline = [device newComputePipelineStateWithFunction:[library
                                                                                    newFunctionWithName:@"dummy"]
                                                                             error:&error];
if (error)
{
    NSLog(@"%@", [error localizedDescription]);
}
MTLTextureDescriptor *desc = [MTLTextureDescriptor …
Run Code Online (Sandbox Code Playgroud)

macos gpgpu ios metal

3
推荐指数
1
解决办法
1561
查看次数

标签 统计

c ×1

estimation ×1

gpgpu ×1

hid ×1

ios ×1

linux-kernel ×1

macos ×1

memory ×1

memory-management ×1

metal ×1

opencv ×1

python ×1

usb ×1

windows ×1