首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测照片底部的黑带

如何检测照片底部的黑带
EN

Stack Overflow用户
提问于 2020-12-01 16:03:25
回答 2查看 48关注 0票数 1

在我的实验中,我在平台上振动一个液滴。我把它录制成一个视频,然后把它分割成帧。我正在对每一幅图像进行预成形分析,以检测出最大高度。我遇到过,不知道怎么解决。为了避免错过振动,我开始记录在平台被提升之前。然而,这意味着开始分析将是错误的。附三张照片,它们是如何在平台前、中间和之后升起液滴的。如何创建代码以使分析从最后一个图像开始?

你可以看到一个黑带(平台)出现时,它足够高,从这一点,我想开始分析的图像。知道怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-01 16:18:57

您可以查看最后几行的平均值:

代码语言:javascript
复制
import cv2
import numpy as np

# First look at top image
im = cv2.imread('im1.jpg', cv2.IMREAD_GRAYSCALE)

In [4]: np.mean(im, axis=1)
Out[4]: 
array([247.975    , 247.43125  , 247.7265625, 247.4      , 247.6734375,
       247.215625 , 247.8046875, 247.3515625, 247.840625 , 247.30625  ,
       247.7359375, 247.2234375, 247.909375 , 247.5125   , 247.675    ,
       247.1359375, 247.6296875, 247.209375 , 247.6734375, 246.971875 ,
       247.225    , 246.2      , 247.1890625, 246.7765625, 247.3453125,
       246.5234375, 247.021875 , 246.3984375, 247.1640625, 246.534375 ,
       247.128125 , 246.5578125, 247.103125 , 246.24375  , 246.7765625,
       246.215625 , 246.6296875, 246.0125   , 246.61875  , 245.8796875,
       246.2921875, 245.36875  , 246.14375  , 245.325    , 246.115625 ,
       245.2296875, 245.8515625, 244.7640625, 245.4890625, 244.7859375,
       245.2859375, 244.584375 , 245.503125 , 244.721875 , 245.2671875,
       244.253125 , 244.9625   , 244.271875 , 245.0296875, 244.296875 ,
       244.8609375, 244.0125   , 244.7265625, 244.028125 , 244.6828125,
       243.740625 , 244.44375  , 243.634375 , 244.265625 , 243.459375 ,
       244.18125  , 243.634375 , 244.078125 , 242.8640625, 243.884375 ,
       242.853125 , 243.70625  , 242.734375 , 243.6734375, 242.703125 ,
       243.1078125, 242.0828125, 242.8734375, 242.0203125, 242.796875 ,
       241.7375   , 242.5453125, 241.6734375, 242.4765625, 241.359375 ,
       241.8078125, 240.9734375, 241.68125  , 240.68125  , 241.5765625,
       240.51875  , 241.290625 , 239.8859375, 241.1515625, 240.303125 ,
       240.6671875, 239.471875 , 240.6328125, 239.590625 , 240.425    ,
       239.2234375, 240.1359375, 238.6109375, 239.83125  , 238.8015625,
       239.4890625, 238.109375 , 239.0203125, 237.7515625, 239.03125  ,
       237.54375  , 238.8890625, 237.0203125, 238.121875 , 236.7265625,
       238.021875 , 236.7765625, 237.4734375, 236.1390625, 237.00625  ,
       235.4421875, 236.503125 , 235.16875  , 236.225    , 234.5078125,
       235.653125 , 234.2296875, 235.2703125, 233.8703125, 234.7765625,
       233.2578125, 234.3015625, 232.8125   , 233.65625  , 232.5765625])

# Now middle image
im = cv2.imread('im2.jpg', cv2.IMREAD_GRAYSCALE)

In [6]: np.mean(im, axis=1)
Out[6]: 
array([248.4484375, 247.9515625, 248.3890625, 247.740625 , 248.1921875,
       247.784375 , 248.2546875, 247.8      , 248.4859375, 248.1625   ,
       248.346875 , 248.0359375, 248.459375 , 248.0578125, 248.3703125,
       247.6703125, 248.2484375, 247.7390625, 248.2421875, 247.625    ,
       247.8671875, 246.8984375, 247.9203125, 247.4515625, 247.96875  ,
       247.4421875, 247.759375 , 247.35625  , 247.6328125, 247.0765625,
       247.640625 , 247.03125  , 247.471875 , 246.8921875, 247.425    ,
       246.8640625, 247.428125 , 246.6671875, 246.9984375, 246.36875  ,
       246.9984375, 246.1828125, 246.840625 , 245.9703125, 246.6703125,
       245.76875  , 246.475    , 245.63125  , 246.2546875, 245.38125  ,
       245.925    , 245.2734375, 246.0703125, 245.3453125, 245.8375   ,
       245.003125 , 245.6484375, 244.921875 , 245.721875 , 245.0171875,
       245.4640625, 244.8609375, 245.346875 , 244.4671875, 245.2953125,
       244.1890625, 245.0828125, 244.4078125, 245.1140625, 244.3296875,
       245.0859375, 244.140625 , 244.8703125, 244.0625   , 244.7203125,
       243.7546875, 244.0890625, 243.390625 , 244.2859375, 243.528125 ,
       244.146875 , 243.1578125, 243.63125  , 242.7078125, 243.54375  ,
       242.50625  , 243.1765625, 242.0296875, 242.85     , 241.7484375,
       242.83125  , 241.4703125, 242.359375 , 241.28125  , 241.5578125,
       239.6859375, 239.41875  , 236.5140625, 235.7140625, 232.715625 ,
       231.453125 , 228.85625  , 228.2890625, 225.70625  , 225.578125 ,
       223.128125 , 223.28125  , 221.3203125, 221.275    , 219.3453125,
       219.640625 , 217.990625 , 218.0625   , 216.3671875, 216.7203125,
       214.6125   , 215.578125 , 214.1921875, 214.5140625, 212.746875 ,
       213.4328125, 211.5109375, 212.0515625, 210.2828125, 211.1859375,
       209.55625  , 210.04375  , 208.24375  , 208.8765625, 206.9515625,
       207.8078125, 205.946875 , 206.3328125, 204.490625 , 205.3      ,
       203.3125   , 203.965625 , 202.3953125, 202.3453125, 201.309375 ])

# Now bottom image
In [7]: im = cv2.imread('im3.jpg', cv2.IMREAD_GRAYSCALE)

In [8]: np.mean(im, axis=1)
Out[8]: 
array([248.203125 , 247.6140625, 248.059375 , 247.2109375, 247.7140625,
       247.165625 , 247.9      , 247.4703125, 247.9765625, 247.4140625,
       247.8140625, 247.3265625, 247.978125 , 247.4875   , 247.8921875,
       247.2265625, 247.85     , 247.384375 , 247.815625 , 247.034375 ,
       247.5046875, 247.021875 , 247.471875 , 247.3234375, 247.55625  ,
       246.784375 , 247.315625 , 246.5890625, 247.215625 , 246.6171875,
       247.0921875, 246.2375   , 246.8484375, 246.2421875, 246.775    ,
       246.1015625, 246.5640625, 245.9515625, 246.359375 , 245.7875   ,
       246.221875 , 245.5765625, 246.125    , 245.44375  , 246.003125 ,
       245.2921875, 245.78125  , 244.875    , 245.53125  , 244.809375 ,
       245.353125 , 244.6875   , 245.2078125, 244.590625 , 245.1921875,
       244.6359375, 245.115625 , 244.4421875, 244.909375 , 244.190625 ,
       245.00625  , 244.21875  , 244.80625  , 243.8765625, 244.48125  ,
       243.6921875, 244.3265625, 243.328125 , 244.221875 , 243.328125 ,
       244.3125   , 243.2703125, 244.0359375, 243.1765625, 243.8828125,
       242.915625 , 243.578125 , 242.7171875, 243.484375 , 242.4375   ,
       243.3546875, 242.1515625, 242.9203125, 241.709375 , 242.7453125,
       241.6140625, 242.2765625, 241.053125 , 241.4171875, 238.809375 ,
       238.3046875, 235.1765625, 233.91875  , 230.5703125, 229.5609375,
       226.9453125, 226.5015625, 224.       , 223.8453125, 222.1015625,
       221.4171875, 219.3171875, 219.7140625, 217.846875 , 218.2203125,
       216.3890625, 217.015625 , 215.3625   , 215.6015625, 214.0890625,
       214.909375 , 213.403125 , 213.903125 , 212.0515625, 212.9796875,
       211.321875 , 212.3      , 210.8703125, 211.7203125, 209.890625 ,
       210.671875 , 209.10625  , 209.9515625, 208.38125  , 209.23125  ,
       207.7328125, 208.48125  , 206.71875  , 207.465625 , 205.721875 ,
       206.4921875, 204.6359375, 205.0859375, 201.6921875, 199.509375 ,
       184.6015625, 164.1765625, 129.8203125, 101.5859375,  92.6609375]) <--- LAST ROWS ARE DARKER
票数 2
EN

Stack Overflow用户

发布于 2020-12-01 16:14:27

您没有提到您的准确性要求以及需要处理的边缘框是什么,但是根据您的示例,这应该很简单:

通过将图像阈值化为黑色和明亮的gray-levels.

  • Morphologically之间的期望值,将图像转换为二进制。关闭可能留下的微小的“黑洞”。最后一行的

  • 查找前0列和最后0列的位置并减去。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65094067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档