今天在对 16 位的深度图提取 HOG 特征时,遇到了以下问题:

代码如下:

import cv2
import numpy as npreff_image = cv2.imread(os.path.join('C:/Users/DELL/Desktop/imgs', image_dir[j]), -1)
img_gradx = cv2.convertScaleAbs(cv2.Sobel(reff_image,cv2.CV_16S,1,0))
img_grady = cv2.convertScaleAbs(cv2.Sobel(reff_image,cv2.CV_16S,0,1))
reff_image = cv2.addWeighted(img_gradx,0.5,img_grady,0.5,0)
cell_size = (6, 6)
num_cells_per_block = (2, 2)
block_size = (num_cells_per_block[0] * cell_size[0], num_cells_per_block[1] * cell_size[1])
x_cells = reff_image.shape[1] // cell_size[0]
y_cells = reff_image.shape[0] // cell_size[1]
h_stride = 1
v_stride = 1
block_stride = (cell_size[0] * h_stride, cell_size[1] * v_stride)
num_bins = 9
win_size = (x_cells * cell_size[0] , y_cells * cell_size[1])
hog = cv2.HOGDescriptor(win_size, block_size, block_stride, cell_size, num_bins)
hog_descriptor_reff = hog.compute(reff_image)

Error 如下:

问题出在读取图片的格式不对,图片的数据类型如下:

in:print(reff_image.dtype)
out:uint16

显然不满足 CV_8U || CV_8UC3 的要求,将图像的数据类型改成 uint8 后,便可解决此问题。

reff_image = reff_image.astype(np.uint8)

问题解决后,查阅官方文档并做如下记录:

OpenCV 中的 img.type() 格式如下:

CV_<bit_depth>(S|U|F)C<number_of_channels>

1、bit_depth:比特数,有代表 8bite\16bite\32bite\64bite;

2、S|U|F:S 表示有符号整型 (signed int),U 表示无符号整型 (unsigned int),F 表示单精度浮点型 (float);

3、<number_of_channels>:代表所存储的图片的通道数。1 为单通道图像 (灰度图),3 为 RGB 图像。

OpenCV中的图像数据格式CV_8U定义相关推荐

  1. Python,OpenCV中的图像修复——cv2.inpaint()

    Python,OpenCV中的图像修复--cv2.inpaint 1. 效果图 2. 原理 3. 源码 参考 image inpainting 图像修改 这篇博客将介绍如何通过OpenCV中图像修复的 ...

  2. OpenCV中关于各种颜色的定义以及RGB值

    OpenCV中关于各种颜色的定义以及RGB值 #define CV_COLOR_RED cv::Scalar(0,0,255)       //纯红 #define CV_COLOR_GREEN cv ...

  3. opencv 锐化 java_如何在OpenCV中锐化图像?

    如何在OpenCV中锐化图像? 如何使用OpenCV锐化图像? 有许多平滑或模糊的方法,但没有我能看到的锐化. 7个解决方案 147 votes 关于反锐化掩蔽的维基百科文章中列出了一个通用程序:您使 ...

  4. OpenCV中Mat,图像二维指针和CxImage类的转换

    在做图像处理中,常用的函数接口有OpenCV中的Mat图像类,有时候需要直接用二维指针开辟内存直接存储图像数据,有时候需要用到CxImage类存储图像.本文主要是总结下这三类存储方式之间的图像数据的转 ...

  5. OpenCV中的图像阈值处理算法

    简 介: 本文讨论了如何通过图像阈值算法来对图像中特点对接进行隔离. 演示了几种不同的阈值分割(全局阈值分割)算法的结果.对于最简单的阈值算法,通过改变其中的阈值可以获得不同的分割效果. 关键词: 阈 ...

  6. OpenCV中的图像金字塔(高斯金字塔、拉普拉斯金字塔)

    最近在看关于数字图像的知识点,目前在图像金字塔部分,实在是懒得用手作笔记了,就以其中比较出名的"高斯金字塔"和"拉普拉斯金字塔"为例,基于OpenCV的源代码作 ...

  7. OpenCV中的图像处理中

    图像金字塔 一般情况下,我们要处理是一副具有固定分辨率的图像.但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理.比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸 ...

  8. OpenCV中对图像数据进行64F和8U转换的方法

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 在OpenCV中很多对数据的运算都需要转换为64 ...

  9. 关于图像opencv中对于长宽的定义

    python-opencv: img.shape输出结果为(高,宽,通道数)---(h,w,c); 获取图像像素的方法为:img[h1,w1,c1] point,输入的分别是(宽,高)或者说是(x,y ...

最新文章

  1. ajax与easyui树节点,EasyUI中的tree用法介绍
  2. Jasypt : 整合spring boot加密应用配置文件敏感信息
  3. vs2013中的error c4996的问题
  4. iptables 过滤条件(Matches)
  5. C语言socket()函数解析(创建套接字)af地址族,ip地址类型(Address Family)INET(Inetnet)PF(Protocol Family)
  6. jquery和zepto的扩展方法extend
  7. [汇编语言]实验三:栈和栈段
  8. Java 7对抑制异常的支持
  9. Docker 容器 和 虚拟机 的异同
  10. BZOJ1876 [SDOI2009]SuperGCD 【高精 + GCD优化】
  11. 《嵌入式系统可靠性设计技术及案例解析》读书笔记(七)
  12. SQL Server:如何加入第一行
  13. nano命令,vi ed pico sed joe emacs jed ex
  14. Linux 火狐无法播放视频
  15. Matlab 谢尔宾斯基三角形
  16. matlab修改图片部分像素值
  17. 到底什么是爬虫技术?简谈爬虫概念
  18. 奇数值结点链表(C语言实现)
  19. 怎么将计算机的触摸鼠标锁定,戴尔笔记本触摸鼠标怎么锁定
  20. oracle字符乱码 老熊,【转载】Hint的常见错误使用方式

热门文章

  1. 全新的水循环真空泵知识小解
  2. 能源替代开辟取暖新时代 光伏赢得认可
  3. 第五篇 项目管理知识体系构成
  4. 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现
  5. 在PPT中怎么增加特殊新字体?
  6. 大数据安全市场现状和需求分析
  7. Python【超强学习网站】
  8. 如何下载延庆区卫星地图高清版大图?
  9. 智能楼宇、智慧建筑3d可视化设计思路-小水智能
  10. Comsol建模部分域的材料(如空气)属性无法被定义问题