导读

 

我想,当大家看到这张图的时候,大家一定开始怀疑小编思想出了问题,居然在搞黄色,其实并不是我思想出了问题或者眼神出了问题,实际上是我们经常忽略了一些问题,问题可能不严重,但是这种习惯容易让我们留下把柄,这样子就可能给别人一些怼你的机会(比如自己的导 师或老板等)

 

你看的出来的问题,别人一定也能看出来,而且还会放大。。。

 

——被导师喷了三年的经验之谈        

 

 

通过一个简单的例子来训练我们的解决问题的能力:

 

目的:读取下面的图片,并显示

原图:看到这个图片,我想一定是哪里出了问题_编程

代码:

# 导入库	
import cv2	
import matplotlib.pyplot as plt	
# 读取图片	
img = cv2.imread('mm.jpg',cv2.IMREAD_COLOR)	
# 显示图片	
plt.imshow(img)	
plt.show()

结果:

看到这个图片,我想一定是哪里出了问题_编程_02

握草,好好的一个姑娘咋变色了?有点像阿凡达

看到这个图片,我想一定是哪里出了问题_编程_03

 

代码很简单,但是比给你一段代码更重要的是遇到问题的时候如何去解决和思考

 

以下我制作的一个思维导图用于分析问题:

看到这个图片,我想一定是哪里出了问题_编程_04

 

1、发现异常

 

发现问题的能力非常的重要,那些大佬们对事物都是有非常敏锐的嗅觉和洞察力,能够一下子发现的所在,通过一些细节就能获取大量有用的信息,属实很屌。

 

在这里,我们看到结果就能发现,有点不对,输出的图片和我想要的不同

 

——对错误有敏锐的嗅觉

 

看到这个图片,我想一定是哪里出了问题_编程_05

 

2、描述问题

 

除了发现异常,我们还需要对问题进行一定的描述,在整理词汇描述的过程实际上就相当于在分析分问题了,这样子我们才能往一个正确的方向前进。

就比如去医院看病,你可能会说我身体不舒服,但是这样子的描述非常的不准确,甚至没有什么价值,然后你继续说我肚子有点不舒服,稍微的缩小了问题的范围,最后再具体的描述是肚子痛还是肚子胀等等,这样子才能实现最终的对症下药。

 

——准确清晰的描述问题

 

例如在这里,我发现虽然有显示出来图片的结果,但是这个颜色不是很正常,咋跟阿凡达一个色啊!

看到这个图片,我想一定是哪里出了问题_编程_06

3、分析问题

 

(1)整理代码实现思路

主要是让自己对整体有一个更清晰的认识,方便可能出现问题的位置

思路:读取图片,显示图片

能显示出结果,说明至少读取和显示功能是能够实现的,但是内部(读入到显示)可能出现了一些小毛病

 

(2)对比,发现问题所在

plt.imshow出现问题,那我试一下cv2.imshow,居然没问题,查一下cv2读入是什么东西(格式等),cv2和plt的imshow的含义等,然后就可能猜到问题所在。

一查便发现原来cv2读入的通道顺序是BGR,但是plt的是RGB,因此显示的结果很奇怪。

 

4、解决问题

 

只需要将BGR通道顺序反过来即可

代码:

# 读入图片	
img = cv2.imread('mm.jpg',cv2.IMREAD_COLOR)	
# 改变通道顺序	
img = img[:,:,[2,1,0]]	
# 显示图片	
plt.imshow(img)	
plt.show()

 

备注:我用plt显示并不是我搞事情 ,实际上是有另外的用途的,方便我显示多张图片

 

总结:

 

实际上这个问题很容易,可能你一百度就能一下子找到答案,但是很多时候,我们遇到问题没有养成一个好的习惯,导致成长的很慢,习惯了伸手,之前遇到过一个人宁愿等半个小时,也不愿意自己百度或者去思考到底哪里错了(最后只是print拼错了)。养成一个思考的习惯比你学会这一段代码得到的价值多的多。

 

 

看到这个图片,我想一定是哪里出了问题_编程_07

看到这个图片,我想一定是哪里出了问题_编程_08

 

 

 

看到这个图片,我想一定是哪里出了问题_编程_09