每一个知识点都分为:原理+API+源码三个部分掌握透彻
本章内容:
Anaconda一站式开发环境
OpenCV基础入门
tensorflow基础入门

python如何使用openCV绘制圆弧 opencv python教程简书_tensorflow

一、Mac下Anaconda搭建

1、下载并安装Anaconda

2、下载并安装tensorflow和opencv

3、下载并安装notebook

python如何使用openCV绘制圆弧 opencv python教程简书_tensorflow_02


会经常使用的两个Home和Environment(开发过程中所有的环境都需要在这个Environment环境中进行添加和配置)

python如何使用openCV绘制圆弧 opencv python教程简书_数据_03

python如何使用openCV绘制圆弧 opencv python教程简书_tensorflow_04


点击下面的Create出现如上所示,可以根据需要选择python的版本。

然后开始进行package的选择:

python如何使用openCV绘制圆弧 opencv python教程简书_数据_05


选中刚才create的环境,然后选中All显示所有packages,然后在右侧的🔍处输入想要安装的package即可。

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_06


右下角会出先Apply选择应用即可。需要填入的包有tensorflow和opencv。

⚠️如果要选的包没有咋办

1、进入官网

https://anaconda.org/menpo/opencv3 以opencv为例

2、

python如何使用openCV绘制圆弧 opencv python教程简书_tensorflow_07


出现上图,其实这里前面有各种opencv版本的选择,这里就选择了下载量第一的演示了,

在终端输入如下:(⚠️要在anaconda的创建目录下输入

python如何使用openCV绘制圆弧 opencv python教程简书_数据_08


然后如果有依赖其他的packages就缺啥装啥就行。

HelloWorld测试案例
1、jupyter的基本功能介绍

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_09


选中tensorflow然后进入launch jupyter直接进入(会选择默认的浏览器进入)

python如何使用openCV绘制圆弧 opencv python教程简书_tensorflow_10


点击new

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_11


出现如下效果,选择python 3,新建文件:

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_12


进入如下界面:

python如何使用openCV绘制圆弧 opencv python教程简书_数据_13


然后先退出一下:

python如何使用openCV绘制圆弧 opencv python教程简书_数据_14


这里面显示标识是绿色的,这说明当前程序正在运行

python如何使用openCV绘制圆弧 opencv python教程简书_tensorflow_15


选中之后点击shutdown就可以终止运行,然后图标变成灰色,意味着终止:

python如何使用openCV绘制圆弧 opencv python教程简书_tensorflow_16


再次勾选,第一个按钮是复制功能,可以copy一个文件;重命名,移动,下载,查看,编辑

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_17


进入文件:下面按钮的功能分别是:保存,添加,剪切,复制。。。和word差不多

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_18

2、测试代码helloworld
#import (python在使用某个模块的时候需要引入)
#string (需要定义一个变量存储字符串)
#print  (将变量打印出来)
import tensorflow as tf#先保存运行一下,否则使用tab功能就没有代码提示)
tf.compat.v1.disable_eager_execution()
hello = tf.constant('hello tensorflow')#使用constant创建变量
sess = tf.compat.v1.Session()#tensorflow需要使用Session才可以进行输出
print(sess.run(hello))#需要使用sess.run(),将所需内容写入run()括号中
a = 'hello world'
print(a)
#1、常量如何定义
#2、sess
#3、print的使用
import cv2
print('hello world')

主要是为了测试是否引入了tensorflow和opencv

图片读取与展示

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_19

#1、引入opencv
import cv2
#2、调用相应的API
#3、因为当前的代码是顺序执行,如果不让程序停下来,那么读取的图片会一下子消失掉,还会出现各种异常
image = cv2.imread('CV学习.png',1)#(1)图片名称(2)读取进来的图片类型,0:读取灰度图,1:读取彩色图
#cv2.imread会有一个返回值,返回的就是当前图片的内容
cv2.imshow('image',image)#(1)窗体名称(2)当前图片的内容
cv2.waitKey(0)
学习方法

1、案例驱动
2、类比,陌生知识使用以前学过的熟悉知识类比
3、合理分配时间和精力(28理论)

opencv的模块组织结构

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_20


calib3d:相机的校准和3d内容相关

core:记录了当前opencv的基础操作,矩阵类型,绘图相关,基本所有基础的都在这里

dnn:神经网络相关

features2d:和图像的焦点检测相关

flann:和聚类临域相关的,不是很重要

highgui:界面

imgcodecs/imgproc:很重要的模块,涉及到滤波

ml:机器学习

object:物体检测模块

photo模块:图片的处理,修复去噪

shape:很少用到

stitching:拼接模块,大图像的拼接

videoio:视频信息,视频分解图像,图像合成信息

图片的写入

1、完成了文件的读取
2、封装格式的解析
3、文件数据解码
4、完成了数据的加载

#1、引入opencv
import cv2
#2、调用相应的API
#3、因为当前的代码是顺序执行,如果不让程序停下来,那么读取的图片会一下子消失掉,还会出现各种异常
image = cv2.imread('CV学习.png',1)#(1)图片名称(2)读取进来的图片类型,0:读取灰度图,1:读取彩色图
#cv2.imread会有一个返回值,返回的就是当前图片的内容
cv2.imshow('image',image)#(1)窗体名称(2)当前图片的内容
cv2.waitKey(0)

我们所经常接触到的模式:jpg、png这些格式是文件的封装格式,一般把文件分成两部分来看待:一部分是文件头,一部分是文件数据,这里的文件数据不是原始数据,而是压缩之后的数据,而大部分文件头描述的是压缩部分的信息和解码信息,解码器可以根据这些附加信息将压缩数据还原成原始数据。为何要进行压缩编码?

python如何使用openCV绘制圆弧 opencv python教程简书_像素点_21

import cv2
image = cv2.imread('image.jpg',1)
cv2.imwrite('image.jpg',image)
#(1)保存的图片名称(写入的)(2)第二个是图片数据(原始数据)
不同图片质量的保存
#jpg
#描述的是图片的质量,范围是(0-100)有损压缩,以牺牲图片质量为代价的
import cv2
img = cv2.imread('image.jpg',1)
cv2.imwrite('image1.jpg',img,[cv2.IMWRITE_JEPG_QUALITY,0])

#png
#1、无损压缩
#2、透明度属性
cv2.imwrite('image1.png',img,[cv2.IMWRITE_PNG_QUALITY,0])

#区别
#1、jpg 0 压缩比高 png 0 压缩比低
#2、jpg 0-100 png 0-9
像素操作基础

1、每种颜色都可以用RGB三种颜色合成
eg:203 203 9 -> 11001011 11001011 00001001
对于每一个像素点来说,存储的是RGB三个点的值,对于一个8位颜色深度的0-255
2、颜色深度
RGB中每一个颜色分量的范围是0-255,共256种,三种颜色共可以表示:256256256种颜色
3、像素
一个像素点可以由三种颜色表示
4、图片的宽高wh
640480:水平方向640个像素点,竖直方向480个像素点
5、计算图片大小
1.14M=720
54738bit/8(B)
6、对于png来说除了RGB 还有alpha通道——描述的图片的透明度
7、除了RGB还有BGR
8、BGR中的B G是蓝色和绿色的颜色通道,我们常说的颜色分量和颜色通道指的是一种单独的颜色

像素读取写入

图片存储的坐标结构

python如何使用openCV绘制圆弧 opencv python教程简书_数据_22


x轴表示的是图片的列,图片的宽度

y轴表示的是图片的行,图片的高度

import cv2
img = imread('image.jpg',1)
(b,g,r) = img[100,100]#以元组的形式返回,opencv是bgr
print(b,g,r)#可以读取像素值
#10-100 --- 110 100
for i in range(0,100):
    img[i+10,100]=(255,0,0)#标准蓝色
cv2.imshow('image',img)
#其实修改的过程就类似于数组赋值的过程
cv2.waitKey(0)