! * \brief pixCountPixelsByColumn() * * \param[in] pix 1 bpp * \return na of counts in each column, or NULL on error */
| 2061 | * \return na of counts in each column, or NULL on error |
| 2062 | */ |
| 2063 | NUMA * |
| 2064 | pixCountPixelsByColumn(PIX *pix) |
| 2065 | { |
| 2066 | l_int32 i, j, w, h, wpl; |
| 2067 | l_uint32 *line, *data; |
| 2068 | l_float32 *array; |
| 2069 | NUMA *na; |
| 2070 | |
| 2071 | PROCNAME("pixCountPixelsByColumn"); |
| 2072 | |
| 2073 | if (!pix || pixGetDepth(pix) != 1) |
| 2074 | return (NUMA *)ERROR_PTR("pix undefined or not 1 bpp", procName, NULL); |
| 2075 | |
| 2076 | pixGetDimensions(pix, &w, &h, NULL); |
| 2077 | if ((na = numaCreate(w)) == NULL) |
| 2078 | return (NUMA *)ERROR_PTR("na not made", procName, NULL); |
| 2079 | numaSetCount(na, w); |
| 2080 | array = numaGetFArray(na, L_NOCOPY); |
| 2081 | data = pixGetData(pix); |
| 2082 | wpl = pixGetWpl(pix); |
| 2083 | for (i = 0; i < h; i++) { |
| 2084 | line = data + wpl * i; |
| 2085 | for (j = 0; j < w; j++) { |
| 2086 | if (GET_DATA_BIT(line, j)) |
| 2087 | array[j] += 1.0; |
| 2088 | } |
| 2089 | } |
| 2090 | |
| 2091 | return na; |
| 2092 | } |
| 2093 | |
| 2094 | |
| 2095 | /*! |
no test coverage detected