已编辑
亲爱的大家。
我的代码似乎让您感到困惑。
我的问题是,最好定期进行比较以检查整个屏幕是否为黑色?
我想知道还有另一种算法可以检查黑屏吗?
另一个问题,我的想法(粒度为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方法可能重复吗?
但是这个问题在另一个领域。
我只使用一个数组。
你错了。
谢谢。
答案 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;
}
}