访问负像素值 OpenCV

2023-12-01

我正在尝试在 OpenCV 中对图像执行过零边缘检测。我模糊并使用 cvLaplace(),然后从 (0, max) 缩放它。我的问题是:如何以正确识别负值的方式访问该图像中的像素值?使用OpenCV(cvPtr2D)提供的函数返回无符号字符。有什么想法或意见吗?

谢谢


像素在内部存储为 IPL_DEPTH_8U,这意味着 8 位无符号字符,范围从 0 到 255。但您也可以将它们打包为 IPL_DEPTH_16S(有符号整数)甚至 IPL_DEPTH_32F(单精度浮点数)。

cvConvertScale() 可能会完成这项工作!但如果你想手动转换它:OpenCV需要将IPL_DEPTH_32S转换为IPL_DEPTH_32F

基本思想是使用 cvCreateImage() 和您需要的格式创建一个新图像,然后使用 cvConvertScale() 将原始数据复制为新格式。最后,您的代码可能如下所示:

IplImage* img = cvLoadImage("file.png", CV_LOAD_IMAGE_ UNCHANGED);
// then retrieve size of loaded image to create the new one

IplImage* new_img = cvCreateImage(img_size, IPL_DEPTH_16S, 1);

cvConvertScale(img, new_img, 1/255.0, -128);

我想这回答了题主的问题。

回答您的评论,您可以像这样访问像素信息:

IplImage* pRGBImg = cvLoadImage(input_file.c_str(), CV_LOAD_IMAGE_UNCHANGED); 
int width = pRGBImg->width; 
int height = pRGBImg->height;
int bpp = pRGBImg->nChannels; 
for (int i=0; i < width*height*bpp; i+=bpp) 
{
  if (!(i % (width*bpp))) // print empty line for better readability
      std::cout << std::endl;

  std::cout << std::dec << "R:" << (int) pRGBImg->imageData[i] <<  
                          " G:" << (int) pRGBImg->imageData[i+1] <<  
                          " B:" << (int) pRGBImg->imageData[i+2] << " "; 
}

不要忘记投票并将此答案标记为已接受,以防万一。

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

访问负像素值 OpenCV 的相关文章

随机推荐

  • Mac OS X 上的 Java System.getProperty("user.dir")

    我的桌面上有一个 Mac OS X 10 4 上的应用程序包 我的应用程序查找一个名为 resources 的文件夹 其中保存要显示的文件 与可运行的 JAR 保存在同一位置 我知道应用程序包中也有一个名为 Resources 的文件夹 抱
  • 通过意图传递可序列化对象

    这是我第一次尝试寻求解决我的问题的方法 所以请尽量友善 通过简单的搜索 我在这个网站上找到了许多我处理的问题的解决方案 但我想这次我没有运气 我发现没有什么适合我的问题 所以我结束了问一个新问题 我试图通过意图将对象从一个活动传递到另一个活
  • 简单的 MVC 设置/设计?

    我只是想确保我在构建简单的 MVC 应用程序方面朝着正确的方向前进 MODEL interface Reactor NSObject NSNumber temperature NSString lastInspection NSNumber
  • 递归 - 嵌套数组求和

    我正在尝试对嵌套数组求和 1 2 3 4 5 不使用循环 但我不明白到目前为止我所拥有的有什么问题 function sumItems array let sum 0 array forEach item gt if Array isArr
  • Youtube API 检索直播游戏标题

    我正在尝试使用 Youtube Api 检索直播的游戏标题 我目前正在使用 视频 列表api 但它似乎没有返回此信息 它确实给了我一些主题 ID 但它们并不代表特定的游戏 这些信息可以通过API获取吗 谢谢 检查此回复 我认为它满足您的所有
  • Rails 不检测文件更改并且 config.reload_classes_only_on_change 使服务器太慢

    首先我不知道这是否是一个错误 到目前为止 我一直在 Railsdevelopment rb 环境配置中使用此命令 以便该框检测我的文件的更改 config reload classes only on change false 但现在 使用
  • 我如何知道我的 Config.xml 文件是否在 Magento 中工作?

    我已经创建了一个示例模块 但我不确定它是否 module etc config xml文件正在加载 我确信仅此而已就有问题 有没有办法可以确定该文件是否已加载 免费模块列表module 由我构建 会告诉您系统中安装了哪些模块 并会告诉您您的
  • MVC3 ModelBinding 到带有索引间隙的回传集合

    我的模型上有一个对象集合 我使用 EditFor 函数在视图中渲染这些对象 并且我有一个 EditorTemplate 负责实际渲染每个对象 Html EditorFor model gt model MyObjects 这已经运行良好一段
  • Python f.read 未读取正确的字节数

    我的代码应该读取 4 个字节 但有时只读取 3 个字节 f open test sgy r f seek 99716 AAA f read 4 BBB f read 4 CCC f read 4 print len AAA print le
  • 如何使用 Scala 使用比较器对 DataFrame 进行排序?

    我想使用我自己的比较器根据列对 DataFrame 进行排序 Spark SQL 可以做到这一点吗 例如 假设我有一个 DataFrame 注册为表 MyTable 其中列 Day 其类型为 string id Day 1 Fri 2 Mo
  • GraphQL 中的输入类型有何意义?

    您能否解释一下为什么如果突变的输入参数是对象它应该是输入类型 我认为简单得多 只需重复使用type无需提供身份证 例如 type Sample id String name String input SampleInput name Str
  • 行为:用动态示例编写场景大纲

    小黄瓜 行为Examples Gherkin 语法特点使用示例测试自动化 Feature Scenario Outline tutorial04 Scenario Outline Use Blender with
  • 如何限制列表视图中的复选框选择?

    friends 我想限制 android listivew 中的复选框选择 例如只应选择 3 个复选框 否则它应该给出错误消息 用户可以从列表中选择任意三个复选框 有人指导我如何实现这一目标吗 这是我的适配器 public class Ad
  • 一种等待传感器数据的方法

    我有一个类 它在启动时启动传感器侦听器 当事件触发时 此侦听器将最新的传感器值写入变量 该类继续执行一些逻辑 并在某个时刻检查此变量并根据值继续操作 我的问题是 无法保证读取变量时有任何值 因为 Android 传感器侦听器仅在传感器值更改
  • 在自定义函数中使用 ggplot stat_function“group”

    如果你读过ggplot s stat function help 你可以看到 stat function 理解以下美学 必需 美学以粗体显示 group y 但没有关于如何使用它的示例 就我而言 我想访问自定义函数内的 组 aes 这是我不
  • Google Play 游戏服务排行榜 - 无法在 Eclipse 中正确设置 jar

    我正在尝试在 Eclipse 中设置我的项目来实现新的Android Play Services 你可以在我下面的 3 个屏幕截图中看到BibleTriviaLite是我的项目然后BaseGameUtils and google play
  • NSURLSession/NSURLConnection HTTP 加载失败,-9802 [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 成功运行程序后 错误将显示在调试区域 import UIKit import CoreLocation protocol ItemDetailViewControllerDelegate
  • 如何在表视图中实现搜索(使用 FRC)

    基础很简单 只需实施
  • Python 错误 OSError: [Errno 31] 链接过多

    请参阅下面的错误消息 我在尝试使用 Python 的本机操作系统库创建新目录时收到此消息 File files py line 93 in create dir os makedirs d File usr lib python2 7 os
  • 访问负像素值 OpenCV

    我正在尝试在 OpenCV 中对图像执行过零边缘检测 我模糊并使用 cvLaplace 然后从 0 max 缩放它 我的问题是 如何以正确识别负值的方式访问该图像中的像素值 使用OpenCV cvPtr2D 提供的函数返回无符号字符 有什么