我要检查黑屏算法

时间:2018-07-04 07:55:11

标签: c image algorithm

已编辑

亲爱的大家。

我的代码似乎让您感到困惑。

我的问题是,最好定期进行比较以检查整个屏幕是否为黑色?

我想知道还有另一种算法可以检查黑屏吗?

另一个问题,我的想法(粒度为10)的准确性如何?

超级谢谢!

================================================ ==========================

我是C语言程序员。

我要检查黑屏算法

有一个屏幕。

该屏幕总共包括1000个像素。 如果像素为黑色,则像素值为零(0)。

像素为黑色的概率未知。 这是因为我不知道屏幕上会出现什么屏幕。

我只想检查几个像素以确认整个屏幕是否为黑色

我想我可以大致了解整个屏幕是否为黑色。 从十分之一中选择一个,看看它是否为黑色。 重复以上操作。

char pixel[1000];

for (idx = 0; idx < 1000; idx++) {
  if (idx % 10 ==0) {
    if (pixel[idx] == black)
      black_count++;
  }
} 

if (black_count > 0)
  print("This screen black maybe");

我认为没有其他办法。

如果还有其他意见,请回答。

谢谢。


亲爱的pritaeas

您说比较两个相同长度的int数组的Best方法可能重复吗?

但是这个问题在另一个领域。

我只使用一个数组。

你错了。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将char[1000]数组视为uint_fast8_t[1000 / sizeof(uint_fast8_t)]数组,因为如果char值之一为非零,则任何较大的数据类型也将为非零。

如果检查定期间隔对您有用,则可以尝试执行以下操作:

#include <stdint.h>
#include <stdbool.h>

char pixel[1000];

int granularity = 10; // Lower: more pixels checked
uint_fast8_t *start = (uint_fast8_t*) pixel;
uint_fast8_t *end = start + (1000 / sizeof(uint_fast8_t) );

bool black = true;

for(; start < end; start += granularity) {
    if(*start) {
        black = false;
        break;
    }
}