C 最轻的像素

C 最轻的像素,c,arrays,pixel,C,Arrays,Pixel,通过(解码的)png文件中的像素来找出哪一个最暗,哪一个最亮应该不会太难,但不管出于什么原因,当我过滤Chris Hadfield的黑白图像时,我的函数告诉我最亮的像素值是74,这是一个深灰色,当有许多明显的珍珠白像素,我的方法应该吐出255。对于最暗的值,我也有一个相反的c方法,我得到了预期的0,但是我的代码有什么问题呢。如能答复,将不胜感激。在测试中,我将lightest设置为255,所以任何像素都不可能比这更亮,我的代码仍然显示在74上。怎么回事 uint8_t min( const ui

通过(解码的)png文件中的像素来找出哪一个最暗,哪一个最亮应该不会太难,但不管出于什么原因,当我过滤Chris Hadfield的黑白图像时,我的函数告诉我最亮的像素值是74,这是一个深灰色,当有许多明显的珍珠白像素,我的方法应该吐出255。对于最暗的值,我也有一个相反的c方法,我得到了预期的0,但是我的代码有什么问题呢。如能答复,将不胜感激。在测试中,我将lightest设置为255,所以任何像素都不可能比这更亮,我的代码仍然显示在74上。怎么回事

uint8_t min( const uint8_t array[], unsigned int cols, unsigned int rows )  {

    uint8_t darkest = 255;

    for(int pixel = 0; pixel < (cols * rows); pixel++){
        if(array[pixel] < darkest){
            darkest = array[pixel]; }}

  return darkest;
}

/* Return the lightest color that appears in the array; i.e. the
   largest value
*/

uint8_t max( const uint8_t array[], unsigned int cols, unsigned int rows )    {

    int8_t lightest = 0;

    for(int pixel = 0; pixel < (cols * rows); pixel++){
        if(array[pixel] > lightest){
            lightest = array[pixel]; }}

    return lightest;
}
uint8\u t最小值(常量uint8\u t数组[],无符号整数列,无符号整数行){
uint8_t最暗=255;
对于(整数像素=0;像素<(列*行);像素++){
if(阵列[像素]<最暗){
最暗=数组[像素];}
返回最黑暗;
}
/*返回数组中出现的最亮颜色;i、 e.会议
最大值
*/
uint8_t max(常量uint8_t数组[],无符号整数列,无符号整数行){
int8_t最轻=0;
对于(整数像素=0;像素<(列*行);像素++){
if(阵列[像素]>最轻){
最轻=数组[像素];}
返回最轻;
}

最轻的指定值不正确。它应该是uint8_t,此数据类型的无符号版本。

注意这里的有符号整数。请在
int8\u t
is-1中的
uint8\u t
0.255中尝试。你没有收到关于
array[pixel]>lightest
的警告吗?@Arkadiy:由于促销,结果将是
int>int
,这很好,没有警告。我解决了这个问题,我眨了眨眼,意识到事实上我的lightest是错误的数据类型,应该是uint8\t。谢谢,解决办法是什么?