文章目录

  • 绘制几何图形
  • 获取并修改图像中的像素点
  • 算术操作
    • 图像的混合

绘制几何图形

‘’’
1’绘制直线

2‘绘制圆形

3’绘制矩形

4‘向图像中添加文字

5’效果展示

import cv2
import  numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
img=np.zeros((512,512,3),np.uint8)
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.circle(img,(256,256),60,(0,0,255),-1)
cv.putText(img,"hello",(100,150),cv.FONT_HERSHEY_COMPLEX,5,(255,255,255),3)
plt.imshow(img[:,:,::-1])
plt.show()

‘’’

获取并修改图像中的像素点

像素点的改变在图片上比较难以观察,则输出了改变点的像素点

# 更改(100,100)处的像素值
img[100,100]=(0,0,255)
plt.imshow(img[:,:,::-1])
#返回这一点的像素值
print(img[100,100]) #[  0   0 255]# ####获取像素的属性print(img.shape)#(512, 512, 3)行、列、通道数
print(img.dtype)#uint8数据类型
print(img.size)#786432图像大小#####通道的拆分与合并# b,g,r=cv.split(img)# img=cv.merge((b,g,r))# ####色彩空间的改变
test=cv.imread("opencv_1.png")
print(plt.imshow(test))
print(plt.imshow(test[:,:,::-1]))#AxesImage(80,52.8;496x369.6)#AxesImage(80,52.8;496x369.6)# cv.imshow('opencv_1.png',test)# img=cv.imread("opencv_1.png",1)
# cv.imshow('opencv_1.png',img)#灰色图形b,g,r=cv.split(test)
plt.imshow(b,cmap=plt.cm.gray)
img2=cv.merge((b,g,r))
plt.imshow(img[:,:,::-1])cv.imshow('opencv_1.png',test)

算术操作

‘’’
可以将两幅图相加,或者通过numpy操作添加两幅图像,
两幅图像应该具有相同的大小和类型,或者第二个图像可以是标量值
opencv加法是饱和操作,numpy中是模运算

import cv2
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt# 读取图像
img1=cv.imread('opencv_1.png');img2=cv.imread("opencv_2.png");
plt.imshow(img1[:,:,::-1])
#加分运算
img3=cv.add(img2,img1)
img4=img1+img2
print(img3.shape)
img_200x200=cv.resize(img1,(200,200))
img_half=cv.resize(img1,(0,0),fx=0.5,fy=0.5,interpolation=cv.INTER_NEAREST)
cv.imshow("img_half",img_half)
cv.imshow("image",img_200x200)# 图像显示
cv.imshow('img3',img3)cv.imshow('img4',img4)# fig,axes=plt.subplot(nrows=1,ncols=2,figsize=(10.8),dpi=100)
# axes[0].imshow(img3[:,:,::-1])



图像的混合

img5=cv2.addWeighted(img1,0.7,img2,0.3,0)#表示所占权重不同
cv.imshow('img5',img5)
# cv.waitKey(0)# ####图像缩放photo1=cv.imread('opencv_2.png')
cv.imshow("123",photo1)#缩放变换
# rows,cols=photo1.shape[:2]
res=cv.resize(photo1,(0,0),fx=0.5,fy=0.5)cv.imshow("qw",res)


import numpy as np
import cv2img = cv2.imread('test.png')# 沿着横纵轴放大1.6倍,之后平移(-150,-240),最后沿原图大小截取,等效于剪裁并放大
M_crop_dog = np.array([[1.6, 0, -150],[0, 1.6, -240]
], dtype=np.float32)# cv2.warpAffine(原始图像, 变换矩阵,变换后的图像大小)
img_dog = cv2.warpAffine(img, M_crop_dog,(400, 400))
cv2.imshow("img_dog", img_dog)# x轴的剪切变换,逆时针旋转角度15°
theta=15*np.pi/180
M_shear=np.array([[1,np.tan(theta),0],[0,1,0]
],dtype=np.float32)img_sheared=cv2.warpAffine(img,M_shear,(400,600))
cv2.imshow("img_sheared",img_sheared)# 顺时针旋转,角度15°
M_rotate=np.array([[np.cos(theta),-np.sin(theta),0],[np.sin(theta),np.cos(theta),0]
],dtype=np.float32)im_rotate=cv2.warpAffine(img,M_rotate,(400,600))
cv2.imshow("im_rotate",im_rotate)# 旋转+缩放+旋转组合,可以通过SVD分解理解
M=np.array([[1,1.5,-400],[0.5,2,-100]
],dtype=np.float32)img_transformed=cv2.warpAffine(img,M,(400,600))
cv2.imshow("img_transformed",img_transformed)cv2.waitKey(0)

opencv学习笔记(二)相关推荐

  1. OpenCv学习笔记(二)--Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解

    (一)Mat矩阵(图像容器)创建时CV_8UC1,CV_8UC2等参数详解 1--Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类 2--创建一个Mat对象的方法很多,我们现在先看一下M ...

  2. opencv学习笔记二十一:使用HSV颜色空间实现颜色识别

    一.颜色空间介绍        RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV( ...

  3. opencv学习笔记二十九:SIFT特征点检测与匹配

    SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points) ...

  4. OpenCV学习笔记二

    图像的掩膜操作 #include<opencv2/opencv.hpp> #include<iostream>using namespace cv;int main(int a ...

  5. OpenCV学习笔记之Mat

    一. Mat介绍 在2001年刚刚出现的时候,OpenCV基于 C 语言接口而建.为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体,时至今日这仍出现在大多数的旧版教 ...

  6. Opencv学习笔记(三) -- 图像压缩与保存

    1.图像压缩 1.1常用图像格式 bmp Windows位图格式.该格式为不压缩格式,缺点是图像文件较大. jpg JPEG是为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用的.应用最 ...

  7. opencv学习笔记(二):基于肤色的人手检测

    opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...

  8. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

  9. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

  10. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

最新文章

  1. R语言ggplot2可视化:使用scale_y_continous函数自定义指定Y轴的坐标范围以及对应的数值、将坐标轴的数值设置为需要的数据类型(整型、浮点型)
  2. python装饰器类-python装饰器2:类装饰器
  3. 80486保护模式存储管理
  4. 【NLP】从头开始学词向量的预训练
  5. T-SQL查询进阶--变量
  6. 使用Sidecar支持异构平台的微服务
  7. 理解C# 4 dynamic(4) – 让人惊艳的Clay
  8. Ubuntu 11.04下最流行的17款应用(linux在中国市场的占有率好像只有0.1几%)
  9. (1)Linux进程调度
  10. Apache从入门到精通
  11. Linux下的进程池(3)
  12. Swift之 ? 和 !
  13. 数据中心建筑设计及功能区布局的注意事项
  14. 8位数控分频器的设计_数控分频器的设计实验报告
  15. mysql完全卸载教程(图文详细)
  16. 3、TPshop之邮箱注册配置教程以及常见错误集合
  17. 服务器建文件夹,服务器建立文件夹
  18. python数字类型中包含了哪三种类型_Python数字类型中包含了________、________和_________三种类型。...
  19. 锆石FPGA---verlog语法篇
  20. 星起航:亚马逊卖家利用一件代发模式实现跨境电商飞速发展

热门文章

  1. 【CV】Python下载安装及环境变量配置教程
  2. python 将一个整数变成2个字节的字符
  3. 配置SSH是出现: sign_and_send_pubkey: signing failed: agent refused operation Permission denied
  4. Error: module pages/utils/util is not defined
  5. linux kill命令
  6. 洛谷-题解 P2672 【推销员】
  7. 金蝶K/3 BOS产品培训教案
  8. ARM Linux 基于S3C2451的AD9833波形发生器/Linux字符驱动的理解
  9. Integer vs int
  10. 最后一片蓝海的终极狂欢-写在Win10发布前夕