getpatch
import time
import os
import math
import sys
import os,os.path,shutil
import numpy as np
import cv2 img_in_path = 'F:/project/Breast/InBreast/INBreast/removeother/'
# img_in_path = 'F:/project/Breast/InBreast/INBreast/imgtest/'
outpathimgyes = 'F:/project/Breast/InBreast/INBreast/outimgpatch/calcification/'
outpathimgno = 'F:/project/Breast/InBreast/INBreast/outimgpatch/no/'
txtPath = 'F:/project/Breast/InBreast/INBreast/AllTXTall/'
# txtPath = 'F:/project/Breast/InBreast/INBreast/ALLtest/'
outpathtxt = 'F:/project/Breast/InBreast/INBreast/outtxtpatch/'
txtType = 'txt'
txtLists = os.listdir(txtPath) #列出文件夹下所有的目录与文件 # Read all points into a list(before 21:30,715) for filename in txtLists:
pp = 0
ppp = 0
with open(txtPath + filename, 'r') as file:
print(filename)
lines = file.readlines()
dataset = [[] for i in range(len(lines))]
for i in range(len(dataset)):
dataset[i][:] = (item for item in lines[i].strip().split(',')) # 逐行读取数据
#print("dateset:", dataset)
# print(type(dataset[0][0]))
# print(dataset.__sizeof__())
u = np.array(dataset)
list = np.zeros((u.shape[0], 2))
for i in range(u.shape[0]):
# print(u[i,0][0])
findNumber = u[i,0].find(" ")
# print(findNumber)
list[i,0] = round(float(u[i, 0][0:findNumber]))
list[i,1] = round(float(u[i, 0][findNumber+1:])) # Read the same name image(before 21:30,715)
img = img_in_path + filename[:-4] + '.png' # out_path
img = cv2.imread(img)
black = np.zeros((img.shape[0], img.shape[1]))
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if img[i,j][0] == 0 and img[i,j][1] == 0 and img[i,j][2] == 0:
black[i][j] = 1
print(img.shape[0],img.shape[1])
# Cutting distance has been determined, Handling cutting details(before 22.30, 715)
row = img.shape[0]/56;
col = img.shape[1]/56;
print(row,col) # 待考虑问题:黑色像素
for i in range(int(row-1)):
# print(i)
for j in range(int(col-1)):
tt = 0
pb = np.sum(black[i * 56:i * 56 + 112,j * 56:j * 56 + 112]) / 12544
# print("top_left:", i*56, j*56)
# print("bottom_right:",i*56+112,j*56+112)
for k in range(u.shape[0]):
if j*56<list[k,0]<j*56+112 and i*56<list[k,1]<i*56+112:
tt = tt + 1
patch_label = np.zeros((tt, 4))
tt1 = 0
for k in range(u.shape[0]):
if j*56<list[k,0]<j*56+112 and i*56<list[k,1]<i*56+112:
patch_label[tt1,0] = list[k,0] - j*56
patch_label[tt1,1] = list[k,1] - i*56
patch_label[tt1,2] = list[k,0]
patch_label[tt1,3] = list[k,1]
tt1 = tt1 + 1
if tt>0 and pb == 0:
patch = img[i * 56:i * 56 + 112,j * 56:j * 56 + 112]
pp = pp + 1
# print(patch.shape)
outputimg = outpathimgyes + '/' + filename[:-4] + '/' + filename[:-4] + '_'+ str(pp) + '.png'
cv2.imwrite(outputimg, patch)
outputtxt1 = outpathtxt + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(pp) + '.txt'
np.savetxt(outputtxt1, patch_label, fmt='%f')
if tt==0 and pb == 0:
patch = img[i * 56:i * 56 + 112,j * 56:j * 56 + 112]
ppp = ppp + 1
# print(patch.shape)
outputimg1 = outpathimgno + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(ppp) + '.png'
cv2.imwrite(outputimg1, patch) print(img.shape[0], img.shape[1])
print(pp,ppp) for i in range(int(row-1)):
tt = 0
pb = np.sum(black[i * 56:i * 56 + 112, img.shape[1] - 113:img.shape[1]-1]) / 12544
# print("top_right:",i*56,img.shape[1]-1)
# print("bottom_left:", i * 56+112, img.shape[1] - 113)
for k in range(u.shape[0]):
if img.shape[1] - 113 < list[k, 0] < img.shape[1]-1 and i * 56 < list[k, 1] < i * 56 + 112:
tt = tt + 1
patch_label = np.zeros((tt, 4))
tt1 = 0
# print(tt)
for k in range(u.shape[0]):
if img.shape[1] - 113 < list[k, 0] < img.shape[1]-1 and i * 56 < list[k, 1] < i * 56 + 112:
patch_label[tt1, 0] = list[k, 0] - j * 56
patch_label[tt1, 1] = list[k, 1] - i * 56
patch_label[tt1, 2] = list[k, 0]
patch_label[tt1, 3] = list[k, 1]
tt1 = tt1 + 1
if tt > 0 and pb == 0.1:
patch = img[i * 56:i * 56 + 112, img.shape[1] - 113:img.shape[1]-1]
pp = pp + 1
# print(patch.shape)
outputimg = outpathimgyes + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(pp) + '.png'
cv2.imwrite(outputimg, patch)
outputtxt1 = outpathtxt + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(pp) + '.txt'
np.savetxt(outputtxt1, patch_label, fmt='%f')
if tt == 0 and pb == 0:
patch = img[i * 56:i * 56 + 112, img.shape[1] - 113:img.shape[1]-1]
ppp = ppp + 1
# print(patch.shape)
outputimg1 = outpathimgno + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(ppp) + '.png'
cv2.imwrite(outputimg1, patch)
print(img.shape[0], img.shape[1])
#
#
#
for j in range(int(col-1)):
# print("bottom_left:", img.shape[0]-1, j*56)
# print("top_right:", img.shape[0] - 113, j * 56+112, )
tt = 0
pb = np.sum(black[img.shape[0]-113:img.shape[0] - 1, j * 56:j * 56+112]) / 12544
# print("top_right:",i*56,img.shape[1]-1)
# print("bottom_left:", i * 56+112, img.shape[1] - 113)
for k in range(u.shape[0]):
if j * 56 < list[k, 0] < j * 56+112 and img.shape[0]-113 < list[k, 1] < img.shape[0]-1:
tt = tt + 1
patch_label = np.zeros((tt, 4))
tt1 = 0
# print(tt)
for k in range(u.shape[0]):
if j * 56 < list[k, 0] < j * 56+112 and img.shape[0]-113 < list[k, 1] < img.shape[0]-1:
patch_label[tt1, 0] = list[k, 0] - j * 56
patch_label[tt1, 1] = list[k, 1] - i * 56
patch_label[tt1, 2] = list[k, 0]
patch_label[tt1, 3] = list[k, 1]
tt1 = tt1 + 1
if tt > 0 and pb == 0:
patch = img[img.shape[0]-113:img.shape[0] - 1, j * 56:j * 56+112]
pp = pp + 1
# print(patch.shape)
outputimg = outpathimgyes + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(pp) + '.png'
cv2.imwrite(outputimg, patch)
outputtxt1 = outpathtxt + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(pp) + '.txt'
np.savetxt(outputtxt1, patch_label, fmt='%f')
if tt == 0 and pb == 0:
patch = img[img.shape[0]-113:img.shape[0] - 1, j * 56:j * 56+112]
ppp = ppp + 1
# print(patch.shape)
outputimg1 = outpathimgno + '/' + filename[:-4] + '/' + filename[:-4] + '_' + str(ppp) + '.png'
cv2.imwrite(outputimg1, patch)
# print(img.shape[0], img.shape[1]) # A = np.array([[1, 2], [3, 4], [5, 6]])
# print(np.sum(A))
print(pp)
getpatch的更多相关文章
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)
通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...
- Amazon API Gateway Importer整合过程小结
(1)需要将swagger json转换成amazon api gateway 所需要的格式(根据Method Request中 Request PathsURL Query String Param ...
- 深入了解Libgdx中间Skin分类
文不是直接翻译.. . 本文在Libgdx的官方wiki的基础上,加上一些自己的理解.所以,难免会一些甚至是非常多的理解非常片面的东西.写的不好,还请见谅.... 事实上 事实上.在LibGDX的官方 ...
- recovery 差分升级包制作超时
我们在对android系统升级的时候,可以减少升级包的大小,只升级差异部分,也就是差分包升级,相关的描述可以参考:http://blog.csdn.net/csdn66_2016/article/de ...
- recovery 差分升级包制作超时【转】
本文转载自:https://blog.csdn.net/csdn66_2016/article/details/73800349 我们在对android系统升级的时候,可以减少升级包的大小,只升级差异 ...
- centos 6.4安装杀毒软件clamAV 0.98[转]
原文出处: http://dnuser.blog.51cto.com/4863891/1303829 1.查看系统版本 [root@local]# lsb_release -a LSB Versi ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7399822 这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过 ...
随机推荐
- 【西北师大-2108Java】第五次作业成绩汇总
[西北师大-2108Java]第五次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第7周学习指导及要求 实验目的与要求 (1)掌握四种访问权限修饰符的使用特点: (2)掌握Object类的用途 ...
- AcWing 800. 数组元素的目标和
网址 https://www.acwing.com/solution/AcWing/content/2064/ 题目描述给定两个升序排序的有序数组A和B,以及一个目标值x,请你求出满足A[i] + B ...
- 在Windows系统中安装matplotlib,需要注意的问题
matplotlib的下载地址:https://pypi.org/project/matplotlib/#files 以python3.6为例,适合的版本matplotlib-3.1.1-cp36-c ...
- springboot+mybatisplus+sharding-jdbc分库分表实例
项目实践 现在Java项目使用mybatis多一些,所以我也做了一个springboot+mybatisplus+sharding-jdbc分库分表项目例子分享给大家. 要是用的springboot+ ...
- JS 从内存空间谈到垃圾回收机制
壹 ❀ 引 从事计算机相关技术工作的同学,对于内存空间相关概念多少有所耳闻,毕竟像我这种非计算机科班出身的人,对于栈堆,垃圾回收都能简单说道几句:当我明白JS 基本类型与引用类型数据存储方式不同,才 ...
- 百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题
UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器.而且,它非常适合虚拟环境,比如:Docker.另外,它通过消费未来时间克服了雪花算法的并发限制.Uid ...
- IT兄弟连 HTML5教程 HTML和CSS的关系
HTML是描述网页的标记语言,是将内容放到网页上,虽然HTML本身也自带一些样式功能,通过自身的属性,来实现一些特定的效果,制作出来的只能是一个网页,而不是一个美观的网页.最主要的是在HTML里面,一 ...
- IT兄弟连 Java语法教程 流程控制语句 分支结构语句5
5 switch-case条件语句 Java中的第二种分支控制语句时switch语句,switch语句提供了多路支持,因此可以使程序在多个选项中进行选择.尽管一系列嵌套if语句可以执行多路测试,然而 ...
- 前端笔记之React(一)初识React&组件&JSX语法
一.React项目起步配置 官网:https://reactjs.org/ 文档:https://reactjs.org/docs/hello-world.html 中文:http://react.c ...
- C# windows服务,解决应用程序开机自启问题
最近在东营做一个超市购物的项目,业务体量很小,是仅供内部员工使用的内网应用程序,其中涉及一个商品数据同步的winform应用程序,有一个问题就是服务器重启后,必须登录服务器操作系统,手动启动才行,于是 ...