一般的变换放大缩小(都是由插值算法得到的,但是都会有损失,目前的超分辨率网络,应该是最好的图像算法,到时候会讲一下超分辨率网络)
直接进入opencv函数(具体插值算法可百度,简单的很)

resize改变图片大小

例子

import cv2
image=cv2.imread("/home/dfy/Pictures/Camera_photo/Camera_photo/sss.jpg")image1=cv2.resize(image,(1300,1200))
cv2.imshow("",image1)
cv2.waitKey(0)if __name__ == '__main__':print()

calcHist函数

hist=cv2.calcHist(images="",channels="",mask="",hist="",histSize="",accumulate="")
images输入图像
channels 输入图像的通道
mask掩模图计算全部图的时候直接为None如果计算部分图像需要配相应的mask
histSize灰度级的个数
range像素值范围
例子

import cv2
from matplotlib import pyplot as pltdef main():image = cv2.imread("/home/dfy/Pictures/Camera_photo/Camera_photo/page2.jpg")chans=cv2.split(image)colors=("b","g","r")plt.figure()#创建画布plt.title("tu")plt.xlabel("bin")plt.ylabel("#of pixes")for (chan,color) in zip(chans,colors):hist = cv2.calcHist([chan], [0], None, [256], [0, 256])plt.plot(hist,color=color)plt.xlim([0,256])plt.show()input()if __name__ == '__main__':main()

使用几何变换实现哈哈镜子特效
输人图像f(x, y),宽高分别为Width和Height,设置图像中心坐标Center (cx, xy)为缩放中心点,图像上任意一点到中心点的相对坐标x-Cx, ty=y- -cY。 哈哈镜效果分为图像拉伸放大和图像缩小。
对于图像拉伸放大,设置图像变换的半径为radius,哈哈镜变换后的图像为p(x, y)。

x=(tx/2)×(sqrt(tx×tx+ty×ty)/radius)+cxx= (tx/2)\times (sqrt(tx \times tx+ty \times ty)/radius) +cxx=(tx/2)×(sqrt(tx×tx+ty×ty)/radius)+cx
y=(ty/2)×(sqrt(tx×tx+ty×ty)/radius)+cyy= (ty/2) \times (sqrt(tx \times tx+ty \times ty)/radius) +cyy=(ty/2)×(sqrt(tx×tx+ty×ty)/radius)+cy

对于图像缩小,设置图像变换的半径为radius,哈哈镜变换后的图像为p(x, y)。

x=cos(atan2(ty,tx))12(sqrt(txxtx+tyxty)+cxx= {cos(atan2(ty, tx))}{12}{(sqrt(txxtx +tyxty) +cx}x=cos(atan2(ty,tx))12(sqrt(txxtx+tyxty)+cx
y=sin(atan2(ty,bx))12(sqrt(txxtx+tyxy)+cyy= sin(atan2(ty, bx))12 (sqrt(txxtx+tyxy) +cyy=sin(atan2(ty,bx))12(sqrt(txxtx+tyxy)+cy
例子1


#可以自己调整中心点
import cv2
import mathdef maxframe():frame = cv2.imread("/home/dfy/PycharmProjects/GAN-TTS-master/sss.jpg")height, width, n = frame.shapecenter_x = width / 2center_y = height / 2randius = 400  # 直径real_randius = int(randius / 2)  # 半径new_data = frame.copy()for i in range(width):for j in range(height):tx = i - center_xty = j - center_ydistance = tx ** 2 + tx ** 2# 为了保证选择的像素是图片上的像素if distance < randius ** 2:new_x = tx / 2new_y = ty / 2# 图片的每个像素的坐标按照原来distance 之后的distance(real_randius**2)占比放大即可new_x = int(new_x * math.sqrt(distance) / real_randius + center_x)new_y = int(new_y * math.sqrt(distance) / real_randius + center_y)# 当不超过new_data 的边界时候就可赋值if new_x < width and new_y < height:new_data[j][i][0] = frame[new_y][new_x][0]new_data[j][i][1] = frame[new_y][new_x][1]new_data[j][i][2] = frame[new_y][new_x][2]cv2.imshow("", new_data)cv2.waitKey(0)def MinFrame():frame = cv2.imread("/home/dfy/PycharmProjects/GAN-TTS-master/sss.jpg")height,width,n=frame.shapecenter_x=width/2center_y=height/2new_data=frame.copy()for i in range(width):for j in range(height):tx=i-center_xty=j-center_ytheta=math.atan2(ty,tx)radius=math.sqrt(tx**2+ty**2)new_x=int(center_x+math.sqrt(radius)*20*math.cos(theta))new_y=int(center_y+math.sqrt(radius)*20*math.sin(theta))if new_x<0 and new_x>width:new_x=0elif new_y<0 and new_y>height:new_y=0else:new_data[j][i][0] = frame[new_y][new_x][0]new_data[j][i][1] = frame[new_y][new_x][1]new_data[j][i][2] = frame[new_y][new_x][2]cv2.imshow("", new_data)cv2.waitKey(0)if __name__ == '__main__':# maxframe()MinFrame()

opencv-python处理图片的一些列操作之几何变换相关推荐

  1. opencv-python处理图片的一些列操作

    cvtColor函数 这个函数有两个参数 1,src 要进行变换的原图像 2,code 转换代码标识 例子: import cv2 image=cv2.imread("ddd.jpg&quo ...

  2. Opencv - python快速入门

    Opencv - python 文章目录 Opencv - python 1. 图像的IO操作 1.1 读取图像 1.2显示图像 1.3 保存图像 1.4 总结 2 绘制几何图形 2.1 绘制直线 2 ...

  3. python对excel某一列去重-「总结篇」Python中所有的Excel操作技巧

    原标题:「总结篇」Python中所有的Excel操作技巧 Python对于Excel的操作是多种多样的,掌握了相关用法就可以随心所欲的操作数据了! 操作xls文件 xlrd(读操作): import ...

  4. python pandas dataframe函数_Pandas的DataFrame列操作

    13. Pandas的DataFrame列操作 本章主要研究一下DataFrame数据结构如何修改.增删等操作. 13.1 rename修改列名字 对一个dataframe的数据使用rename函数后 ...

  5. OpenCV Python在计算机视觉中的应用

    OpenCV Python教程 在这篇文章中,我们将使用Python中的OpenCv来涵盖计算机视觉的各个方面.OpenCV长期以来一直是软件开发的重要组成部分. 什么是计算机视觉? 我们考虑一个场景 ...

  6. python获取图片像素矩阵_用python处理图片实现图像中的像素访问

    这篇文章主要介绍了关于用python处理图片实现图像中的像素访问,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然 ...

  7. OpenCV Python教程(2、图像元素的访问、通道分离与合并)

    OpenCV Python教程之图像元素的访问.通道分离与合并 转载请详细注明原作者及出处,谢谢! 访问像素 像素的访问和访问numpy中ndarray的方法完全一样,灰度图为: [python] v ...

  8. 独家|OpenCV 1.4 对图像的操作

    翻译:陈之炎 校对:吴振东本文约2400字,建议阅读5分钟本文为大家系统地介绍了OpenCV对图像的操作. 图像的输入/输出 从文件中加载图像: 如果读入的是一个JPG文件,默认状态下会创建一个3通道 ...

  9. python像素大于_用python处理图片实现图像中的像素访问

    前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都 ...

最新文章

  1. LeetCode 1201. 丑数 III(最小公倍数+二分查找)
  2. 12、(12.4.2)保护模式下数据段和栈段保护
  3. Windows Internet Explorer 7 正式发布
  4. MyEclipse常用插件使用教程
  5. 生成各种随机数据:随机数、随机字符串、随机汉字姓名、随机电话号码、随机日期
  6. 网站快速收录-网站快速收录工具下载免费
  7. Amazon SP API注册申请和授权
  8. 输入阻抗、输出阻抗、阻抗匹配和特性阻抗
  9. 苹果iOS捷径(快捷指令)修改网页元素:移动端开发者工具console的替代方案
  10. 年薪和月薪有什么区别
  11. 禁止计算机使用u盘启动,电脑禁用u盘的设置方法
  12. 第26课时,实践4,定期存款利息计算器
  13. 计算机网络——网络层:控制层面
  14. 数据结构与算法Python版之北大慕课笔记(五)
  15. 舵机常见问题原理分析及解决办法
  16. 24lc01资料准备
  17. 快手 sig(sign)签名算法 java版
  18. Arduino-IRremote-红外遥控器,发射与接收
  19. 农历查询API接口说明,农历API
  20. 汉语言文学类毕业论文,有什么好写的选题?

热门文章

  1. vue cli 添加html,vue-cli创建的项目,配置多页面的实现方法
  2. python3.7如何安装库_Python3.7版库的安装以及常用方法(十分简单)
  3. u盘锁电脑_Win10电脑无法识别U盘?这5步操作就能轻松搞定,收藏备用
  4. python中实例方法分类_python方法的分类(实例方法、类方法、静态方法)
  5. php一个星期没找到工作怎么办_高校开学推迟,校园招聘遥遥无期,还没找到工作的应届生怎么办?...
  6. php自动加载类与路由,PHP实现路由与类自动加载步骤详解
  7. springboot 物联网_物联网架构实例分享
  8. 计算机应用问题,计算机应用中存在的问题及解决
  9. STM32 中malloc实际调用
  10. layui树形父子不关联_DP专题7 | 没有上司的舞会 洛谷1352(树形DP)