今天是2022年7月25日,开始学习Jupyter Notebook。
最近看了一篇论文,采用改进YoloV4模型检测复杂环境下马铃薯_张兆国。论文里的方法是在的复杂环境下检测马铃薯,处理照片所用的软件为openCV,以下是我的大致安排。
时间:四天(7.25-7.29)
学习任务:简单了opencv,学会用软件简单处理照片。
学习网站:极棒的数字图像处理入门到进阶教程:Python OpenCV实战数图_哔哩哔哩_bilibili
学习资料:G:opencv
接下来我将会记录在所学过程中所遇到的困难和学习心得
1、程序包含两个cell,当我直接运行第二个cell,显示报错,报错内容是“某某未定义”,但是我已经定义了,我百思不得其解。
答:
注意前面的中括号,试运行的顺序,将上面导入模块的代码运行后,再运行下方代码,就不会报错(我是在不经意之间发现,附上此时我内心os:被自己蠢哭了)
2、
import numpy as np import matplotlib.pyplot as plt import cv2 as cv
以上是导入三个模块,切记一定要执行上述程序。
##读取照片,
照片存入电脑是以矩阵(数字)的形式存入照片,RGB分别是以red green blue颜色,各个有8位,每位整数值分别介于0-255之间,共有256位。
2.1以矩阵形式输出
img = cv.imread("pivwenjianming.jpg")
print(img)
以上代码读写运行时,结果为数组,这也是读取图片的一种形式。
2.2以对话框的形式输出(img是命名的图片)
cv.imshow("bear",img)
cv.waitKey(0)
cv.destroyAllWindows()
输出时为弹出窗口,进行图片的输出。
imshow(winname, mat) winname窗口名称,mat图像显示
上面代码可以表示为,一个窗口叫做bear显示了img图像。
2.3在程序下方输出照片
plt.imshow(img) plt.show()
以上的程序运行后,直接在程序下面输出照片,但是输出照片跟真实照片的有区别(斯~,欣赏不了)。
注:plt.imshow输出照片的格式是BGR(不确定解释的对不对,是按照字母顺序排列的)
我们需要将BGR改成RGB格式。代码如下:
img2 = cv.cvtColor(img,cv.COLOR_BGR2RGB) plt.imshow(img2) plt.show()
2.4将定义一个show()的函数。主要功能为:当图片的数组维数为2时输出照片,当数组维数大于2时,将照片先转化为RGB格式然后再输出。
def show(img):
if img.ndim == 2:
plt.imshow(img,cmap="gray")
eles:
plt.imshow(cv.cvtColor(img,cv.COLOR_BGR2RGB))
plt.show
注:这里有一个重要的知识点,就是plt.imshow函数,我在整理笔记时,忘记了后面 plt.imshow(img,cmap="gray")中,cmap="gray"是什么意思。
我先将我查阅的资料连接放这:
(98条消息) imshow中的 cmap=plt.cm.gray_r 是调整颜色,附颜色大全_云霄IT的博客-CSDN博客_plt.cm.gray
首先说cmap="gray" ,黑白的意思,
cmap=plt.cm.gray_r, # cmap参数: 为调整显示颜色 gray为黑白色,加_r取反为白黑色
3 设置表格
x = np.arange(2,25) y = np.random.randint(5,20,23)
x,是从2开始到24一共有23个数字。
y,随机产生23个数,范围在5-20之间。
生成的表格如下:
3.1生成复杂的图标
x = np.linspace(0,1,100) #解释在0-1之间分成100份
y1 = np.power(x,0.5) #x的0.5次方
y2 = x #x的一次方
y3 = np.power(x,1.5) #x的1.5次方
plt.plot(x,y1,label="0.5")
plt.plot(x,y2,label="1")
plt.plot(x,y3,label="1.5")
plt.legend()
显示如下:
继续给横坐标和纵坐标标号:
代码如下:
plt.xlabel("r")
plt.ylabel("s")
plt.grid() #加上网格
上面的起始点不为0和1,我们将其起始点设置为0到1。
plt.xlim([0,1])
plt.ylim([0,1])
一张稍微复杂的图片就完成了。
3.2生成柱状图,hist函数
a = np.random.randint(1,101,1000) #a是从1到101之间(不包括101)随机生成1000个数。
plt.hist(a,rwidth=0.5,color = "g") # 统计一下各个数的占比,生成柱状图,宽度是50%,颜色是绿 plt.show()
第一章学习结束,完美的ending。今天略微有点小困。



