浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别

1、image.load_img()

from keras.preprocessing import image

img_keras = image.load_img('./original/dog/880.jpg')
print(img_keras)

img_keras = image.img_to_array(img_keras)
print(img_keras[:,1,1])

效果如下:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=256x384 at 0x2E6999D37B8>
#image.load_img()只是加载了一个文件,没有形成numpy数组,
#下面的numpy数组是通过image.img_to_array()的函数形成的

[108. 108. 110. 115. 119. 120. 122. 125. 127. 127. 129. 131. 132. 134.
 1. 135. 138. 138. 139. 143. 141. 136. 132. 131. 135. 121. 103. 97.
 2. 85. 69. 65. 69. 67. 74. 80. 77. 82. 92. 99. 105. 113.
 3. 126. 128. 129. 132. 134. 135. 135. 135. 135. 134. 133. 131. 130.
 4. 124. 122. 120. 119. 119. 121. 122. 123. 121. 120. 120. 122. 124.
 5. 124. 123. 121. 120. 119. 119. 118. 116. 114. 121. 120. 117. 115.
 6. 112. 111. 111. 114. 105. 104. 107. 104. 103. 106. 105. 101. 71.
 7. 99. 99. 77. 71. 80. 69. 71. 69. 65. 63. 65. 64. 61.
 8. 67. 74. 77. 79. 81. 79. 76. 78. 78. 77. 75. 77. 79.
 9. 72. 68. 68. 67. 66. 64. 63. 61. 61. 57. 57. 56. 56.
 10. 51. 45. 42. 34. 31. 28. 26. 27. 28. 28. 28. 29. 29.
 11. 28. 27. 26. 25. 26. 24. 23. 22. 21. 21. 21. 22. 22.
 12. 21. 21. 20. 20. 20. 19. 19. 19. 18. 18. 18. 18. 18.
 13. 18. 18. 18. 17. 16. 14. 13. 12. 12. 10. 10. 10. 10.
 14.  9.  9.  8. 10. 10. 10. 10. 12. 15. 18. 20. 23. 20.
 15. 175. 229. 231. 230. 221. 219. 220. 227. 223. 213. 220. 227. 221.
 16. 216. 219. 214. 197. 187. 179. 165. 175. 160. 175. 201. 206. 207.
 17. 196. 178. 189. 207. 195. 190. 188. 152. 124. 97. 113. 179. 214.
 18. 122. 172. 178. 204. 196. 200. 184. 167. 147. 112. 106. 131. 193.
 19. 202. 188. 187. 199. 206. 207. 208. 172. 139. 147. 128. 130. 215.
 20. 224. 221. 219. 217. 218. 206. 185. 158. 180. 174. 173. 142. 139.
 21. 200. 202. 205. 174. 122. 119. 123. 120. 155. 206. 160. 191. 191.
 22. 182. 158. 116. 66. 29.  6. 22. 47. 54. 53. 55. 61. 64.
 23. 75. 80. 84. 86. 88. 87. 88. 89. 89. 88. 87. 86. 86.
 24. 71. 174. 136. 13.  7. 38. 68. 77. 79. 80. 81. 81. 80.
 25. 78. 77. 77. 77. 77. 76. 76. 76. 75. 74. 75. 75. 75.
 26. 73. 71. 70. 68. 65. 62. 59. 57. 55. 52. 49. 46. 43.
 27. 34. 31. 28. 25. 23.]

2、cv2.imread()

import cv2

img_cv2 = cv2.imread('./original/dog/880.jpg')
print(img_cv2[:,1,1])

效果如下:

[108 108 110 115 119 120 122 125 127 127 129 131 132 134 134 135 138 138
 139 143 141 136 132 131 135 121 103 97 97 85 69 65 69 67 74 80
 77 82 92 99 105 113 120 126 128 129 132 134 135 135 135 135 134 133
 131 130 126 124 122 120 119 119 121 122 123 121 120 120 122 124 124 124
 123 121 120 119 119 118 116 114 121 120 117 115 113 112 111 111 114 105
 104 107 104 103 106 105 101 71 72 99 99 77 71 80 69 71 69 65
 63 65 64 61 62 67 74 77 79 81 79 76 78 78 77 75 77 79
 76 72 68 68 67 66 64 63 61 61 57 57 56 56 54 51 45 42
 34 31 28 26 27 28 28 28 29 29 28 28 27 26 25 26 24 23
 22 21 21 21 22 22 21 21 21 20 20 20 19 19 19 18 18 18
 18 18 18 18 18 18 17 16 14 13 12 12 10 10 10 10  9  9
  9  8 10 10 10 10 12 15 18 20 23 20 27 175 229 231 230 221
 219 220 227 223 213 220 227 221 220 216 219 214 197 187 179 165 175 160
 175 201 206 207 207 196 178 189 207 195 190 188 152 124 97 113 179 214
 147 122 172 178 204 196 200 184 167 147 112 106 131 193 218 202 188 187
 199 206 207 208 172 139 147 128 130 215 228 224 221 219 217 218 206 185
 158 180 174 173 142 139 151 200 202 205 174 122 119 123 120 155 206 160
 191 191 192 182 158 116 66 29  6 22 47 54 53 55 61 64 69 75
 80 84 86 88 87 88 89 89 88 87 86 86 92 71 174 136 13  7
 38 68 77 79 80 81 81 80 79 78 77 77 77 77 76 76 76 75
 74 75 75 75 74 73 71 70 68 65 62 59 57 55 52 49 46 43
 38 34 31 28 25 23]

补充知识:keras报错:load_weights() got an unexpected keyword arguement 'skip_mmismatch'

网上下载了一个Yolo(keras+tensorflow)网络的训练代码,在运行的时候,报了以下错误:

load_weights() got an unexpected keyword arguement 'skip_mmismatch'。

在网上搜索了半天,也没有发现具体原因,最后,仔细看了看这句话的报错,因为我调用的是一个keras的内置函数,却报了没有这个参数的错,就想到了版本问题。最后将keras进行升级(我的升级到了2.1.5版本),这个问题就解决了。

总结:

在跑keras和tensorflow程序的时候遇到了好多次这种版本导致的问题。因为深度学习现在发展比较迅速,所以很多框架的API更新比较快,以后debug的时候一定要注意排查版本问题。

以上这篇浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • PIL.Image.open和cv2.imread的比较与相互转换的方法

    摘要 PIL.Image.open读入的是RGB顺序,而opencv中cv2.imread读入的是BGR通道顺序 .cv2.imread会显示图片更蓝一些. cv2.imread(path,读取方式)方法 第一个参数是图片的路径. 第二个参数是读取方式:cv2.IMREAD_COLOR:读入一副彩色图片:cv2.IMREAD_GRAYSCALE:以灰度模式读入图片:cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道. 默认为cv2.IMREAD_COLOR. 返回值是

  • 解决python cv2.imread 读取中文路径的图片返回为None的问题

    使用cv2读取图片时,输出图片形状大小时出现报错" 'NoneType' object has no attribute shape",后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取. 下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推. 使用PIL读取图像,能够成功读取图片,借此了解图片的大小和格式,代码如下图所示: cv.imread函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,

  • 升级keras解决load_weights()中的未定义skip_mismatch关键字问题

    1.问题描述 在用yolov3训练自己的数据集时,尝试加载预训练的权重,在冻结前154层的基础上,利用自己的数据集finetune. 出现如下错误: load_weights(),got an unexpected keyword argument skip_mismatch 2.解决方法 因为keras旧版本没有这一定义,在新的版本中有这一关键字的定义,因此,更新keras版本至2.1.5即可解决. source activate env pip uninstall keras pip ins

  • 浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别

    1.image.load_img() from keras.preprocessing import image img_keras = image.load_img('./original/dog/880.jpg') print(img_keras) img_keras = image.img_to_array(img_keras) print(img_keras[:,1,1]) 效果如下: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB s

  • 浅谈Python2.6和Python3.0中八进制数字表示的区别

    在Python2.x中表示八进制的方式有两种:以'0'开头和以'0o'(字母o)开头: Python2.7中: >>> 0100 64 >>> 0o100 64 >>> 而在Python3.x中则废弃了以'0'开头的表示方式,只支持'0o'开头的表示形式: Python3.4: >>> 0100 SyntaxError: invalid token >>> 0o100 64 以上这篇浅谈Python2.6和Pytho

  • 浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别

    Exception e中e的getMessage()和toString()方法的区别: 示例代码1: public class TestInfo { private static String str =null; public static void main(String[] args) { System.out.println("test exception"); try { if(str.equals("name")){ System.out.println

  • 浅谈使用splice函数对数组中的元素进行删除时的注意事项

    使用splice函数对数组中的元素进行删除时的注意事项 删除值为c的元素: <script> var arr = new Array(); arr[0] = 'a'; arr[1] = 'b'; arr[2] = 'c'; arr[3] = 'c'; arr[4] = 'e'; for(var i=0; i<arr.length; i++){ if(arr[i] == 'c'){ arr.splice(i,1); i=i-1; // 必须对i减去1,否则后面的一个元素会被跳过去 } }

  • 浅谈static a[n*m]={0};中static的作用

    正如我们知道的,函数内部的一般变量和数组都在栈区开辟内存,但是栈区的内存是有限的,当我们要开辟的内存较大时,编译器会报错,那我们该如何处理呢? 我们又知道,static int a;表示在全局区为变量a分配内存,同理我们在数组前面加上static之后,系统也为该数组在全局区分配内存,全局区的总内存比较大,一般会满足我们的需求. 如题:当n*m比较大时,这就是为什么static a[n*m]={0};必须带着static的原因了. 以上这篇浅谈static a[n*m]={0};中static的作

  • 浅谈Pandas Series 和 Numpy array中的相同点

    相同点: 可以利用中括号获取元素 s[0] 可以的得到单个元素 或 一个元素切片 s[3,7] 可以遍历 for x in s 可以调用同样的函数获取最大最小值 s.mean()  s.max() 可以用向量运算 <1 + s> 和Numpy一样, Pandas Series 也是用C语言, 因此它比Python列表的运算更快 以上这篇浅谈Pandas Series 和 Numpy array中的相同点就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 浅谈Vue render函数在ElementUi中的应用

    vue的render函数在日常开发中被广泛应用,今天以ElementUI中的table表头重构为引,实际应用一下借助render函数实现表头搜索,不足之处请多多指教! 首先引入官方demo <el-table :data="tableData" style="width: 100%" :border="true"> <el-table-column prop="date" label="日期&quo

  • 浅谈java object对象在heap中的结构

    对象和其隐藏的秘密 java.lang.Object大家应该都很熟悉了,Object是java中一切对象的鼻祖. 接下来我们来对这个java对象的鼻祖进行一个详细的解剖分析,从而理解JVM的深层次的秘密. 工具当然是使用JOL: @Slf4j public class JolUsage { @Test public void useJol(){ log.info("{}", VM.current().details()); log.info("{}", ClassL

  • 浅谈静态变量、成员变量、局部变量三者的区别

    静态变量和成员变量的区别: A:所属不同 静态变量:属于类,类变量    成员变量:属于对象,对象变量,实例变量 B:内存位置不同 静态变量:方法区的静态区    成员变量:堆内存 C:生命周期不同 静态变量:静态变量是随着类的加载而加载,随着类的消失而消失    成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失 D:调用不同 静态变量:可以通过对象名调用,也可以通过类名调用    成员变量:只能通过对象名调用 成员变量和局部变量的区别: A:在类中的位置不同 成员变量:在类中方法

  • 浅谈mysql的索引设计原则以及常见索引的区别

    索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引. 那么索引设计原则又是怎样的? 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录. 例如,学生表中学号是具有唯一性的字段.为该字段建立唯一性索引可以很快的确定某个学生的信息. 如果使用姓名的话,可能存在同名现象,从而降低查询速度. 2.为经常需要排序.分组和联合操

随机推荐