__author__ = "WSX"
import cv2 as cv
import numpy as np def local_threshold(img): #局部阈值
gray = cv.cvtColor(img , cv.COLOR_BGR2GRAY) #首先变为灰度图
binary = cv.adaptiveThreshold( gray ,255 , cv.ADAPTIVE_THRESH_GAUSSIAN_C , cv.THRESH_BINARY, 25 , 10,)#255 最大值
#上面的 有两种方法ADAPTIVE_THRESH_GAUSSIAN_C (带权重的均值)和ADAPTIVE_THRESH_MEAN_C(和均值比较)
#blockSize 必须为奇数 ,c为常量(每个像素块均值 和均值比较 大的多余c。。。少于c)
#ret 阈值 , binary二值化图像
cv.imshow("binary", binary)
return binary def jinzita( level ,img ):
temp = img.copy()
level = level
pyr_img = []
for i in range(level):
dst = cv.pyrDown( temp ) #pyrup 和pyrDown 相反
temp = dst.copy()
return temp def result(binary):
w , h = binary.shape[:2]
print(binary)
print(w,h)
# temp = np.zeros((w ,h))
# temp = list(temp)
#temp = []; tt = []
with open("result.txt","r+") as f:
for i in range(w):
for j in range(h):
if binary[i,j] == 0:
temp = ""
elif binary[i,j] == 255:
temp = ""
f.write(temp)
f.write("\r\n")
f.close()
#print(temp.shape)
def main():
img = cv.imread("1.JPG")
#cv.namedWindow("Show", cv.WINDOW_AUTOSIZE)
cv.imshow("Show", img)
t = jinzita(3, img)
binary=local_threshold(t)
result(binary)
cv.waitKey(0)
cv.destroyAllWindows() main()

改进了一下下:

 __author__ = "WSX"
import cv2 as cv
import numpy as np def local_threshold(img): #局部阈值
gray = cv.cvtColor(img , cv.COLOR_BGR2GRAY) #首先变为灰度图
binary = cv.adaptiveThreshold( gray ,255 , cv.ADAPTIVE_THRESH_GAUSSIAN_C , cv.THRESH_BINARY, 25 , 10,)#255 最大值
#上面的 有两种方法ADAPTIVE_THRESH_GAUSSIAN_C (带权重的均值)和ADAPTIVE_THRESH_MEAN_C(和均值比较)
#blockSize 必须为奇数 ,c为常量(每个像素块均值 和均值比较 大的多余c。。。少于c)
#ret 阈值 , binary二值化图像
cv.imshow("binary", binary)
return binary def jinzita( level ,img ):
temp = img.copy()
level = level
pyr_img = []
for i in range(level):
dst = cv.pyrDown( temp ) #pyrup 和pyrDown 相反
temp = dst.copy()
return temp def result(binary):
w , h = binary.shape[:2]
print(binary)
print(w,h) with open("result.txt", "w") as f: #初始化文件
f.write("")
f.close()
with open("result.txt","r+") as f:
for i in range(w):
for j in range(h):
if binary[i,j] == 0:
temp = "●"
elif binary[i,j] == 255:
temp = "○"
f.write(temp)
f.write("\r\n")
f.close()
#print(temp.shape)
def main():
img = cv.imread("1.JPG")
#cv.namedWindow("Show", cv.WINDOW_AUTOSIZE)
cv.imshow("Show", img)
t = jinzita(3, img)
binary=local_threshold(t)
result(binary)
cv.waitKey(0)
cv.destroyAllWindows() main()

18、OpenCV Python 简单实现一个图片生成(类似抖音生成字母人像)的更多相关文章

  1. 一个类似抖音 APP 拍摄按钮效果的控件

    TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButton android:id="@+i ...

  2. Python简单的制作图片验证码

    -人人可以学Python--这里示范的验证码都是简单的,你也可以把字符扭曲 人人可以学Python.png Python第三方库无比强大,PIL 是python的一个d第三方图片处理模块,我们也可以使 ...

  3. javascript - 简单实现一个图片延迟加载的jQuery插件

    最近在看一本书<Third-Party Javascript>很不错,推荐给大家,下载地址各位自己搜索了. 步骤: 1.打开google,鉴于google基本打不开,那么就打开这个网址吧. ...

  4. Python爬虫帮你打包下载所有抖音好听的背景音乐,还不快收藏一起听歌【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  5. 用python悄悄记录了室友的抖音在线时间

    今天给大家分享一篇有趣的文章,灵感来自于前几天与室友的聊天,他告诉我抖音可以实时显示人的在线情况,如下图: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在 ...

  6. opencv第一课 打开一个图片

    #include<stdio.h>#include<stdlib.h>#include<opencv2\opencv.hpp>#include<iostrea ...

  7. 使用python简单创建一个用户和商城小程序

    整体思路: 1.用户功能:购买.显示余额.列表清单.输入 2.商家功能:修改和添加商品 创建两个接口: 用户: #Author: Gordon #读取文档,生成goodsf = open('goods ...

  8. Python-制作抖音图片

    ---------------------------------------------------------------------------------------------------- ...

  9. Python爬虫---爬取抖音短视频

    目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经 ...

随机推荐

  1. Maven+Mybatis+Spring+SpringMVC实现分页查询

    转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...

  2. LeetCode题解 #155 Min Stack

    写一个栈,支持push pop top getMin 难就难在在要在常量时间内返回最小的元素. 一开始乱想了很多东西,想到了HashMap,treeMap,堆什么的,都被自己一一否决了. 后来想到其实 ...

  3. Python基础学习四 文件操作(二)

    ####读取文件#### with open('goods_info.txt', 'r', encoding='utf-8') as f: f.seek(0) # 注意指针位置 goods_info ...

  4. Elasticsearch之插件介绍及安装

    ES站点插件(以网页形式展现) 1.BigDesk Plugin (作者 Lukáš Vlček) 简介:监控es状态的插件,推荐![目前不支持2.x] 2.Elasticsearch Head Pl ...

  5. NUnit属性

    TestFixture:它标记一个类包含测试,申明该类是用来测试的.一般用在class的定义之前: Test一般是放在method之前,表示对该方法的测试:如前一篇文章所示的class. SetUp/ ...

  6. init方法返回值自动改写问题

    [init方法返回值自动改写问题] 在ARC开启的情况下,以init开头的实例方法的返回值会被默认无视,返回类型会被编译器改写为类指针类型. 如一人类叫UIButton类,如果一个方法叫 (UILab ...

  7. 证明3|n(n+1)(2n+1)

    [证明3|n(n+1)(2n+1)] n(n+1)(2n+1) => n(n+1)(n+2+n-1) => n(n+1)(n+2) + n(n+1)(n-1) 因为n(n+1)(n+2). ...

  8. 带你剖析WebGis的世界奥秘----瓦片式加载地图(转)

    带你剖析WebGis的世界奥秘----瓦片式加载地图 转:https://zxhtom.oschina.io/zxh/20160805.html  编程  java  2016/08/05 0留言,  ...

  9. Part8-不用内存怎么行_6410内存初始化lesson3

    1.6410地址空间 外设区:从0x70000000-0x7FFFFFFF有256MB 主存储区:从0x00000000-0x6FFFFFFF有1972MB 对于主存储区: 静态存储区可以接我们的NO ...

  10. C# DateTime.ToString()的各种日期格式

    DateTime.ToString()的各种日期格式 例: ToString:2016/9/27 0:00:00 ToString("yyyy/MM/dd"):2016/09/27 ...