java 按像素生成图片_按黑色像素阈值裁剪图像

相当缓慢但有效 . 首先从左向右移动以找到黑色像素和其他像素之间的边界 . 之后从右向左移动以找到黑色和其他像素之间的边界 . 最后,我们得到两个边界列表left_data和right_data . 从第一行检查左边界到右边界之间的距离并移动直到距离相同然后停止 . 最后我们得到了所需图像的四个角 .

import cv2

image = cv2.imread('sample.png') #Test Image

image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

height = image.shape[0]

width = image.shape[1]

Black = 0

left = 0

right = 0

data_left = [] #left boundary

data_right = [] #right boundary

for i in range(height):

for j in range(width-1):

first = image[i][j]

second = image[i][j+1]

if(first==Black and second!=Black):

left=j

data_left.append(left)

for i in range(height):

j = width-1

found = 0

while(found==0 and j>=0):

first = image[i][j]

second = image[i][j-1]

if(first==Black and second != Black):

right = j

found = 1

j = j-1

data_right.append(right)

left_start = [0,data_left[0]]

right_start = [0,data_right[0]]

left_end = 0

right_end = 0

i = 0

found = 0

while(i

if((data_left[i]==left_start[1] and data_right[i]==right_start[1])==False):

found = 1

left_end = [i,data_left[i]]

right_end = [i,data_right[i]]

i = i+1

width = data_right[0]-data_left[0]

height = left_end[0]

pos_y = 0

pos_x = data_left[0]

crop_image = image[pos_y:pos_y+height, pos_x:pos_x+width]

cv2.imwrite('result.jpg',crop_image) # result image

原始图像

dj1f4.png

结果图像

dtN7D.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值