告诉我如何用代码实现调节外接显示屏的亮度并实现护眼模式
时间: 2023-03-09 17:05:49 浏览: 113
要实现调节外接显示屏的亮度并实现护眼模式,你可以使用以下代码://调节显示屏的亮度
displays.forEach((display) => {
display.setBrightness(50);
});//实现护眼模式
displays.forEach((display) => {
display.enableEyeCareMode(true);
});
相关问题
OpenCV Android 实现最小外接矩形切割图形的详细代码
你可以使用 OpenCV 在 Android 上实现最小外接矩形切割图形的功能。下面是一个简单的代码示例:
首先,确保你的 Android 项目已经集成了 OpenCV。然后,创建一个新的 Java 类,例如 `ImageProcessingUtils`,并在其中添加以下代码:
```java
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint2f;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.RotatedRect;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;
public class ImageProcessingUtils {
public static Mat cropToMinBoundingBox(Mat inputImage) {
// 转换为灰度图像
Mat grayImage = new Mat();
Imgproc.cvtColor(inputImage, grayImage, Imgproc.COLOR_BGR2GRAY);
// 二值化处理
Mat binaryImage = new Mat();
Imgproc.threshold(grayImage, binaryImage, 0, 255, Imgproc.THRESH_BINARY | Imgproc.THRESH_OTSU);
// 查找轮廓
Mat contours = new Mat();
Mat hierarchy = new Mat();
Imgproc.findContours(binaryImage, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
// 找到最大轮廓
int maxContourIndex = -1;
double maxContourArea = 0;
for (int i = 0; i < contours.size().height; i++) {
double area = Imgproc.contourArea(contours.row(i));
if (area > maxContourArea) {
maxContourIndex = i;
maxContourArea = area;
}
}
// 获取最小外接矩形
MatOfPoint2f maxContour = new MatOfPoint2f();
contours.get(maxContourIndex).convertTo(maxContour, CvType.CV_32F);
RotatedRect minBoundingBox = Imgproc.minAreaRect(maxContour);
// 旋转最小外接矩形
Mat rotatedImage = new Mat();
Mat rotationMatrix = Imgproc.getRotationMatrix2D(minBoundingBox.center, minBoundingBox.angle, 1.0);
Imgproc.warpAffine(inputImage, rotatedImage, rotationMatrix, inputImage.size(), Imgproc.INTER_CUBIC);
// 裁剪图像
Rect boundingRect = minBoundingBox.boundingRect();
Mat croppedImage = new Mat(rotatedImage, boundingRect);
return croppedImage;
}
}
```
然后,在你的 Android Activity 或 Fragment 中调用这个方法来实现最小外接矩形切割图形的功能。例如:
```java
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.android.OpenCVLoader;
public class MainActivity extends AppCompatActivity implements LoaderCallbackInterface {
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 加载图像
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);
Mat inputImage = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC3);
Utils.bitmapToMat(bitmap, inputImage);
// 切割图像
Mat croppedImage = ImageProcessingUtils.cropToMinBoundingBox(inputImage);
// 显示切割后的图像
Bitmap croppedBitmap = Bitmap.createBitmap(croppedImage.cols(), croppedImage.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(croppedImage, croppedBitmap);
ImageView imageView = findViewById(R.id.image_view);
imageView.setImageBitmap(croppedBitmap);
}
}
```
这个代码示例使用了 OpenCV 的一些功能来处理图像,包括灰度转换、二值化、轮廓查找和最小外接矩形计算。最后,将切割后的图像显示在一个 ImageView 中。
记得将 `R.drawable.your_image` 替换为你的图像资源 ID,并在你的 Android 项目中添加相应的图像资源文件。
希望这个代码示例能够帮助到你实现最小外接矩形切割图形的功能!
正点原子stm32开发板外接超声波传感器实现距离的测量的代码实现
正点原子STM32开发板外接超声波传感器测距的代码实现步骤如下:
1.定义引脚
#define HC_TRIG_PORT GPIOA
#define HC_TRIG_PIN GPIO_Pin_1
#define HC_ECHO_PORT GPIOA
#define HC_ECHO_PIN GPIO_Pin_2
2.初始化引脚
void HC_SR04_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = HC_TRIG_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(HC_TRIG_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = HC_ECHO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(HC_ECHO_PORT, &GPIO_InitStructure);
HC_TRIG_PORT->ODR &= ~(1<<1);
HC_ECHO_PORT->ODR &= ~(1<<2);
}
3.测距函数实现
uint32_t HC_SR04_Get_Distance(void)
{
uint32_t distance = 0;
uint32_t time_out = 0x7ffff;
uint32_t temp = 0;
HC_TRIG_PORT->ODR &= ~(1<<1); //先默认触发信号为低电平
delay_us(2);
HC_TRIG_PORT->ODR |= (1<<1); //将触发信号拉高
delay_us(10); //延时10us
HC_TRIG_PORT->ODR &= ~(1<<1); //将触发信号拉低
while((GPIOA->IDR & GPIO_Pin_2) == 0) //等待脉冲高电平
{
if(time_out-- == 0) return 0;
}
while((GPIOA->IDR & GPIO_Pin_2) != 0) //开始计时,等待脉冲低电平
{
delay_us(1); //多延时1us
temp++;
if(temp > 12500) //大约20ms时跳出,防止超时
{
break;
}
}
distance = temp / 58;
return distance;
}
4.测试代码
int main(void)
{
uint32_t Distance;//定义距离变量
HC_SR04_Init(); //初始化
while(1)
{
Distance = HC_SR04_Get_Distance(); //读取距离
printf("Distance = %d cm.\r\n", Distance);//在串口助手中打印距离
delay_ms(200);
}
}
以上就是正点原子STM32开发板外接超声波传感器测距的代码实现方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)