__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. 一.lock的使用

    使用ReentrantLock类 ReentrantLock类在扩展功能上更加强大,比如嗅探锁定,多路分支通知.而且在使用上也比synchronized更加灵活 调用ReentrantLock对象的l ...

  2. ffmpeg-URL(转)

    ffmpeg中为方便对资源进行访问,定义了两个结构体,URLContext中是对具体资源文件进行操作的上下文,URLProtocol则是在将资源进行分类的基础上,对某一类资源操作的函数集,熟悉Linu ...

  3. ASP.NET Core应用到Windows Service中

    托管到Windows Service中 众所周知,ASP.NET Core采用了和传统ASP.NET不同的托管和HTTP处理方式,即把服务器和托管环境完全解耦. ASP.NET Core内置了两个HT ...

  4. 移植RT2870无线网卡驱动到s3c2416

    公司项目要用到usb无线网卡,芯片是ralink的RT2870.以下是将其驱动移植到s3c2416的步骤. 1.下载驱动源码,雷凌官网的下载地址是: http://www.ralinktech.com ...

  5. java定时任务调度工具Timer与Quartz的区别

    Timer与Quartz的区别有三点: 1.出身不同:Timer由jdk直接提供,调用方式简单粗暴,不需要其它jar包支持.Quartz并非jdk自带,需要引入相应的jar包 2.能力区别:主要体现在 ...

  6. xcode中的预定义宏

    [xcode中的预定义宏] 1.SRCROOT,是定义本target的proj的路径. 2.OBJROOT,对象文件根路径,对象文件(即obj文件)就是中间的临时文件.中间文件输出目录的名字以“pro ...

  7. BootstrapValidator:表单验证神器

    前言:做Web开发的我们,表单验证是再常见不过的需求了.友好的错误提示能增加用户体验.博主搜索bootstrap表单验证,搜到的结果大部分都是文中的主题:bootstrapvalidator.今天就来 ...

  8. centos 搭建docker环境

    我有一台便宜的腾讯云服务器,当然配置自然也是最低的,只是用来平常玩一玩,学习的用处,下面介绍一下我在上面搭建docker的心得,共勉一下. 安装与配置 Docker 安装 Docker Docker ...

  9. 20-取石子动态规则(hdu2516 斐波那契博弈)

    http://acm.hdu.edu.cn/showproblem.php?pid=2516 取石子游戏 Time Limit: 2000/1000 MS (Java/Others)    Memor ...

  10. 2、awk的输出

    1.常见的输出格式整理 awk '{print "this is " $1, $2, $1*$2, NR, NF, $NF}' file1   ###字符输出,字段输出,运算输出, ...