图片的总像素计算和像素点统计、像素选取和修改、感兴趣RIO区域提取

0.本文主要内容:

1.什么是像素

2.如何计算一张照片有多少像素

3.照片的像素点统计

4.照片的像素选取和修改

5.照片的感兴趣RIO区域提取

1.什么是像素

像素:是指在由一个数字序列表示的图像中的一个最小单位,称为像素。

2.如何计算一张照片有多少像素

(1)黑白照片

a.通过照片属性查看像素

其中位深度:8,即照片的类型为uint8

b.通过cv2查看像素

    img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',0)
    w,h=img.shape
    size=img.size
    print(f'总像素:{size}\n宽:{h},高:{w}')

 输出:

总像素:1049088
宽:1366,高:768

通过结果,总像素=宽度像素*高度像素。

(2)彩色照片

a.通过照片属性查看像素

其中位深度:24,即照片的类型为uint8,彩色照片为3通道,B、G、R三张照片的叠加。

 

b.通过cv2查看像素

    img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',1)
    w,h,channels=img.shape
    size=img.size
    print(f'总像素:{size}\n宽:{h},高:{w}')

 输出:

  • 4
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是计算无人机拍摄图片素点经纬度的 C++ 代码: ```cpp #include <iostream> #include <cmath> const double PI = 3.1415926535898; const double EARTH_RADIUS = 6378137.0; // 地球半径,单位米 // 计算经度差 double calcLonDiff(double lat, double distance) { double dlon = 2 * asin(sin(distance / (2 * EARTH_RADIUS)) / cos(lat)); return dlon; } // 计算纬度差 double calcLatDiff(double distance) { double dlat = distance / EARTH_RADIUS; return dlat; } // 计算素点经纬度 void calcPixelGPS(double droneLat, double droneLon, double droneYaw, double pixelX, double pixelY, double imgWidth, double imgHeight, double fov, double &pixelLat, double &pixelLon) { double fovRad = fov * PI / 180.0; // 视角弧度值 double f = imgWidth / (2.0 * tan(fovRad / 2.0)); // 焦距 double pixelXm = (pixelX - imgWidth / 2.0) / f; // 计算素点到光心的距离(以焦距为单位) double pixelYm = (imgHeight / 2.0 - pixelY) / f; double pixelDistance = sqrt(pixelXm * pixelXm + pixelYm * pixelYm + 1.0); // 像素点到光心的距离(单位为焦距) double pixelYaw = atan2(pixelXm, 1.0); // 像素点的航向角(与正北方向的夹角) double droneYawRad = droneYaw * PI / 180.0; // 无人机朝向弧度值 double heading = pixelYaw + droneYawRad; // 像素点的航向角(与正北方向的夹角) double pixelDistanceReal = pixelDistance * cos(droneYawRad) * cos(pixelYaw) - sin(droneYawRad) * sin(pixelYaw); // 像素点到无人机的实际距离 double latDiff = calcLatDiff(pixelDistanceReal); // 计算纬度差 double lonDiff = calcLonDiff(droneLat * PI / 180.0, pixelDistanceReal); // 计算经度差 pixelLat = droneLat + latDiff * 180.0 / PI; // 像素点的纬度 pixelLon = droneLon + lonDiff * 180.0 / PI; // 像素点的经度 } int main() { double droneLat = 30.0; // 无人机当前位置纬度 double droneLon = 120.0; // 无人机当前位置经度 double droneYaw = 90.0; // 无人机当前朝向,以正北方向为0度,顺时针旋转为正值 double pixelX = 100.0; // 图片素点横坐标 double pixelY = 200.0; // 图片素点纵坐标 double imgWidth = 1920.0; // 图片宽度 double imgHeight = 1080.0; // 图片高度 double fov = 85.0; // 图片视角,单位度 double pixelLat, pixelLon; // 像素点经纬度 calcPixelGPS(droneLat, droneLon, droneYaw, pixelX, pixelY, imgWidth, imgHeight, fov, pixelLat, pixelLon); std::cout << "Pixel GPS: " << pixelLat << ", " << pixelLon << std::endl; return 0; } ``` 需要注意的是,该代码中假设地球为标准的球体,实际应用时可能需要考虑地球的椭球形。另外,该代码中假设图片中心为光心,实际应用时需要根据相机参数进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值